我知道如何更改特定UIElement的SystemColor,如下所示
<DataGrid>
<DataGrid.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="LightGray" />
</DataGrid.Resources>
</DataGrid>但是我想在我的应用程序中为所有的DataGrid设置这个设置。我如何在我的app.xaml文件中设置它以使其工作?这显然不起作用:
<Style TargetType="{x:Type DataGrid}">
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="LightGray" />
</Style>发布于 2020-03-09 15:43:37
将其放入Style的资源中:
<Style TargetType="DataGrid">
<Style.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="LightGray" />
</Style.Resources>
</Style>发布于 2020-03-09 15:45:18
在此之前,您需要执行以下几个步骤。
1.创建资源字典
在Microsoft documentation之后,您需要创建一个资源字典,并用所需的元素填充它。大概是这样的:
<ResourceDictionary x:Key="whatever">
<Style TargetType="DataGrid">
<Setter Property="Background" Value="Aqua" />
</Style>
</ResourceDictionary>将其保存在一个单独的XAML文件中,可能是DataGridStyles.xaml。
2.在应用程序中包含ResourceDictionary
现在,我们需要在应用程序中包含ResourceDictionary。我将使用merged resource dictionaries完成此操作。这可以在多个不同的级别上完成。如果希望它是全局的,请在App.xaml中执行此操作
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="DataGridStyles.xaml" />
<!-- Include any amount of Resource Dictionaries you want -->
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>您可能需要修改<ResourceDictionary ... />标记的Source属性,使其引用正确的XAML文件,并在发布时也包含该文件。我个人推荐使用pack URIs
当您正确地这样做时,样式应该正确地导入到从App.xaml运行的所有内容中。这种方法还提供了其他好处,比如能够组织你的风格,并将它们集中在一起,而不是通过应用程序分散。此外,这种方法还允许您在运行时切换样式,只需最少的代码更改。
https://stackoverflow.com/questions/60596087
复制相似问题