我查看过网络,看看是否有一个简单的解释我的问题。但是很多答案都是基于编写代码(C#),而我认为你不需要这样做。
我基本上想要一个样式页面,而不是复制和粘贴相同的代码,我可以引用该文件(有点像CSS)
基本上,我有一个具有这种风格的Datagrid标题
<DataGridTextColumn.HeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="HorizontalContentAlignment" Value="Center" />
<Setter Property="Foreground" Value="White"/>
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="Background" Value="LightBlue" />
</Style>
</DataGridTextColumn.HeaderStyle>
但目前我正在为我的应用中的每个DataGrid标头复制并粘贴此内容。当然有一种简单的方法可以阻止这种重复吗?
由于
答案 0 :(得分:3)
如果您希望将 App.Resources
文件应用于所有 App.xaml
,请在 DataGridColumnHeaders
文件下定义该样式} 强>
<App.Resources>
<Style TargetType="{x:Type DataGridColumnHeader}">
....
</Style>
</App.Resources>
答案 1 :(得分:3)
基本上您正在寻找ResourceDictionary文件。它允许跨应用程序共享相同的样式,模板等。在您的例如中“{包含”来自ResourceDictionary
的资源。 Window.Resources
,您必须添加ResourceDictionary.MergedDictionaries
部分,如下所示:
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/MyDll;component/Styles/slCommonStyles.xaml" />
<ResourceDictionary Source="slGridBase.xaml" />
<ResourceDictionary Source="../Templates/slColumnTemplates.xaml" />
</ResourceDictionary.MergedDictionaries>
第一个'include'使用pack uri语法。如果您“包含”来自其他DLL
库的资源,则需要这样做。
答案 2 :(得分:1)
如果您希望将此样式应用于所有DataGridTextColumn,请在App.xaml中添加此样式而不使用x:Key in App Resources
<App.Resources>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="HorizontalContentAlignment" Value="Center" />
<Setter Property="Foreground" Value="White"/>
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="Background" Value="LightBlue" />
</Style>
</App.Resources>
或者您希望在选择性列标题上定义,在样式上定义x:key
<Style x:Key="MyHeaderStyle" TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="HorizontalContentAlignment" Value="Center" />
<Setter Property="Foreground" Value="White"/>
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="Background" Value="LightBlue" />
</Style>
并使用<DataGridTextColumn HeaderStyle="{StaticResource MyHeaderStyle}"