Как включить окно 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();
}
}
}
Надеюсь, это поможет тому, кто в этом нуждается.