Как изменить SystemColors приложения DataGrid в целом - PullRequest
1 голос
/ 09 марта 2020

Я знаю, как изменить SystemColor для указанного c UIElement, подобного этому

<DataGrid>
  <DataGrid.Resources>
    <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="LightGray" />
  </DataGrid.Resources>
</DataGrid>

Но я хочу сделать этот параметр для всех DataGrid s в моем приложении. Как я могу настроить это в моем app.xaml файле, чтобы он работал? Это, очевидно, не работает:

<Style TargetType="{x:Type DataGrid}">
  <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="LightGray" />
</Style>

Ответы [ 2 ]

1 голос
/ 09 марта 2020

Есть несколько шагов, которые нужно сделать, прежде чем это сработает.

1. Создайте словарь ресурсов

Следуя документации Microsoft , вам необходимо создать словарь ресурсов и заполнить его нужными элементами. Примерно так:

<ResourceDictionary x:Key="whatever">
    <Style TargetType="DataGrid">
        <Setter Property="Background" Value="Aqua" />
    </Style>
</ResourceDictionary>

Сохраните это в отдельном файле XAML, возможно DataGridStyles.xaml.

2. Включите ResourceDictionary в ваше приложение

Теперь нам нужно включить ResourceDictionary в наше приложение. Я сделаю это, используя объединенные словари ресурсов . Это можно сделать на нескольких разных уровнях. Если вы хотите, чтобы он был глобальным, сделайте это в App.xaml

<Application.Resources>
     <ResourceDictionary>
         <ResourceDictionary.MergedDictionaries>
             <ResourceDictionary Source="DataGridStyles.xaml" />
             <!-- Include any amount of Resource Dictionaries you want -->
         </ResourceDictionary.MergedDictionaries>
     </ResourceDictionary>
</Application.Resources>

Возможно, вам придется поиграться со свойством Source тегов <ResourceDictionary ... />, чтобы оно ссылалось на правильный файл XAML и чтобы получить его, чтобы включить его при выпуске. Лично я рекомендую использовать pack URI

Если вы все сделали правильно, стиль должен быть правильно импортирован во все, что запускается с App.xaml. Этот подход также предлагает другие преимущества, такие как возможность организации ваших стилей и их централизации вместо распространения в приложении. Кроме того, этот подход может также позволить вам переключать ваши стили во время выполнения с минимальными изменениями кода.

1 голос
/ 09 марта 2020

Поместите его в ресурсы Style:

<Style TargetType="DataGrid">
    <Style.Resources>
        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="LightGray" />
    </Style.Resources>
</Style>
...