Как включить окно Chrome с использованием кода C#, а не XAML?

Поэтому я использую оболочку WPFS для применения Chrome к пользовательскому окну. Из этой статьи я узнал, что для ее использования мне нужно обратиться к библиотеке Microsoft.Windows.Shell и использовать этот код XAML:

<shell:WindowChrome.WindowChrome>
    <shell:WindowChrome
    ResizeBorderThickness="6"
    CaptionHeight="43"
    CornerRadius="25,25,10,10"
    GlassFrameThickness="0">
    </shell:WindowChrome>
</shell:WindowChrome.WindowChrome>

У меня вопрос, как включить Chrome с использованием кода C#, а не XAML? (т.е. как я могу применить Chrome в коде позади?)

2 ответа

Решение

Ах, глупый я. Это было легко:

WindowChrome.SetWindowChrome(this, new WindowChrome());

Я знаю, что это старый вопрос, но я заметил, что я не мог получить WindowChrome.GetWindowChrome() работать в.NET 4.5. Я не уверен, имеет ли это отношение к System.Windows.Shell будучи включенным в PresentationFramework сборка. Но так как он продолжал возвращаться null не было бы способа обновить хром.

Поэтому я решил добавить "Имя" к WindowChrome что сделало его доступным в коде позади.

XAML:

<Window x:Class="SomeProject.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"  
    mc:Ignorable="d"Title="Some Window" WindowStyle="None" ResizeMode="CanResize" 
    AllowsTransparency="True">

    <WindowChrome.WindowChrome>
        <WindowChrome x:Name="chrome" ResizeBorderThickness="6" CaptionHeight="0"
                      GlassFrameThickness="0" CornerRadius="0" UseAeroCaptionButtons="False"/>
    </WindowChrome.WindowChrome>

</window>

Код позади:

using System;
using System.Window;    

namespace SomeProject
{
    public partial class MainWindow: Window
    {
        public MainWindow()
        {
            //Get Existing 'WindowChrome' Properties.
            var captionHeight = chrome.CaptionHeight;

            //Set Existing 'WindowChrome' Properties.
            chrome.GlassFrameThickness = new Thickness(2d);

            //Assign a New 'WindowChrome'.
            chrome = new System.Windows.Shell.WindowChrome();
        }
    }
}

Надеюсь, это поможет тому, кто в этом нуждается.

Другие вопросы по тегам