我有一个这样的课程:
public class MyWindow : Window
{
static MyWindow()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(MyWindow), new FrameworkPropertyMetadata(typeof(MyWindow)));
}
}
我的MainWindow.xaml看起来像这样:
<Window.Resources>
<Style TargetType="{x:Type local:MyWindow}">
<Setter Property="Title" Value="Test" />
<Setter Property="Background" Value="Green" />
</Style>
</Window.Resources>
<Grid>
<Button x:Name="button" Content="Button" HorizontalAlignment="Left" Margin="215,124,0,0" VerticalAlignment="Top" Width="75" Click="button_Click"/>
</Grid>
我没有将它包括在内以保持简洁,但是button_Click方法只是新的MyWindow并且在它上面做了Show()。
的问题:
有没有办法使用像我正在尝试的资源字典来定义窗口?我正在尝试这样做,因此我的控件用户(需要主机窗口)可以根据需要自定义主机窗口。
答案 0 :(得分:1)
以下代码表示窗口具有默认样式:
static MyWindow()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(MyWindow), new FrameworkPropertyMetadata(typeof(MyWindow)));
}
此默认样式应在名为“generic.xaml”的资源字典中定义,该字典位于项目根目录中名为“Themes”的文件夹中。这些名称按惯例。所以你应该把你的风格移到Themes/Generic.xaml
。您可能还希望将样式基于默认样式:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication7">
<Style TargetType="{x:Type local:MyWindow}" BasedOn="{StaticResource {x:Type Window}}">
<Setter Property="Title" Value="Test" />
<Setter Property="Background" Value="Green" />
</Style>
</ResourceDictionary>
如何在WPF中创建自定义窗口: https://blog.magnusmontin.net/2013/03/16/how-to-create-a-custom-window-in-wpf/