Я хотел бы создать библиотеку некоторых из моих обычно используемых элементов управления WPF, и одним из этих элементов управления является CustomWindow
, который наследуется от класса Window
. Как я могу заставить мой CustomWindow
использовать внешний вид по умолчанию, который определен в библиотеке вместе с ним?
Я могу заменить
<Window x:Class="..." />
с
<MyControls:CustomWindow x:Class="..." />
и это работает для поведения окна, но не для внешнего вида.
EDIT
Вот упрощенная версия того, что я имею до сих пор:
Пользовательское управление окнами. Расположен в библиотеке управления.
public class CustomChromeWindow: Window
{
static CustomChromeWindow()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(CustomChromeWindow),
new FrameworkPropertyMetadata(typeof(CustomChromeWindow)));
}
}
Стиль окна. Расположен в Generic.xaml, ResourceDictionary в папке Темы библиотеки элементов управления
<Style TargetType="local:CustomChromeWindow">
<Setter Property="WindowStyle" Value="None" />
<Setter Property="Background" Value="Red" />
</Style>
Тестовое окно. Окно запуска отдельного проекта, который ссылается на управляющую библиотеку
<local:CustomChromeWindow
x:Class="MyControlsTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:MyControls;assembly=MyControls"
Title="MainWindow" Height="350" Width="525"
>
<Grid>
<TextBlock Text="This is a Test" />
</Grid>
</local:CustomChromeWindow>
Я получаю окно с обычным WindowStyle и черным фоном.