如何将DataGrid.Resources应用于所有DataGrid

时间:2015-08-10 14:49:10

标签: c# wpf xaml datagrid

我创建了一个包含多个DataGrid控件的WPF项目。我希望它们以正常样式显示选定的行,即使DataGrid失去焦点也是如此。下面的代码有效,但我想要一种简单的方法将它应用于项目中的所有DataGrids,而无需手动将此代码插入到项目中的每个DataGrid中。可以在app.xaml文件或其他一些中央资源中完成吗?



            <DataGrid Name="dgStores" AutoGenerateColumns="True" AutoGeneratedColumns="DataGrid_AutoGeneratedColumns" >
                <DataGrid.Resources>
                    <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="DodgerBlue"/>
                    <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="White"/>
                    <SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightBrushKey}" Color="DodgerBlue"/>
                    <SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightTextBrushKey}" Color="White"/>
                </DataGrid.Resources>
            </DataGrid>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

创建一个以DataGrid为目标的样式,并将您的资源添加到样式资源中,并将其置于可视树中的DataGrids上方(例如App.xaml):

<Style TargetType="DataGrid">
    <Style.Resources>
        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="DodgerBlue"/>
        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="White"/>
        <SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightBrushKey}" Color="DodgerBlue"/>
        <SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightTextBrushKey}" Color="White"/>
    </Style.Resources>
</Style>