我正在尝试创建自定义用户控件。我创建了两个样式的ResourceDictionary文件(Themes \ Generic.xaml):
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:my="http://schemas.microsoft.com/wpf/2008/toolkit"
xmlns:themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero"
xmlns:components="clr-namespace:ORPO.WPF.Components">
<Style TargetType="{x:Type components:HeaderFilterDataGrid}" BasedOn="{StaticResource {x:Type DataGrid}}">
...
</Style>
<Style TargetType="{x:Type DataGridColumnHeader}">
...
</Style>
</ResourceDictionary>
和我的自定义控件类:
public class HeaderFilterDataGrid : DataGrid
{
...
static HeaderFilterDataGrid()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(HeaderFilterDataGrid),
new FrameworkPropertyMetadata(typeof(HeaderFilterDataGrid)));
}
...
}
当我应用第一个样式
时,它工作正常DefaultStyleKeyProperty.OverrideMetadata(typeof(HeaderFilterDataGrid),
new FrameworkPropertyMetadata(typeof(HeaderFilterDataGrid)));
如何为自定义控件应用第二种样式? 我需要同时应用这两种样式。
答案 0 :(得分:3)
将DataGridColumnHeader
样式放在HeaderFilterDataGrid
样式的资源中。这种方式DataGridColumnHeader
将是HeaderFilterDataGrid中所有DataGridColumnHeaders的默认样式。
<ResourceDictionary ...>
<Style TargetType="{x:Type components:HeaderFilterDataGrid}"
BasedOn="{StaticResource {x:Type DataGrid}}">
<Style.Resources>
<Style TargetType="{x:Type DataGridColumnHeader}">
...
</Style>
</Style.Resources>
...
</Style>
</ResourceDictionary>