具有不同资源的多个DataGrids?

时间:2014-01-27 09:47:42

标签: c# wpf xaml datagrid

我有两个DataGrids具有不同的样式和资源,但是一个DataGrid资源会覆盖另一个DataGrid资源。 所以我的问题是我可以将特定资源设置为DataGrid,例如x:Key吗?

我的XAML代码:

First DataGrid.Resources:

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

第二个DataGrid.Resources:

<DataGrid.Resources>
   <SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightBrushKey}" Color="{x:Static SystemColors.HighlightColor}"/>
   <SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightTextBrushKey}" Color="{x:Static SystemColors.HighlightTextColor}"/>
</DataGrid.Resources>

1 个答案:

答案 0 :(得分:0)

我希望我能正确理解你的问题,关于你希望2个数据网格资源如何相互冲突。如果它们将在同一个文件中,您可以尝试这样的东西......

        <DataGrid.Resources>

            <Style x:Key="DataGrid1Style"  TargetType="{x:Type DataGrid}">
            <Setter Property="......" Value="....." />
            ...
            ...
            ...
            </Style>

            <Style x:Key="DataGrid2Style"  TargetType="{x:Type DataGrid}">
            <Setter Property="......" Value="....." />
            ...
            ...
            ...
            </Style>

        </DataGrid.Resources>

如果它们不在同一个文件中,我建议您创建一个资源字典文件并在其中添加2个样式,并将其添加到App.xaml中,假设您有一个资源文件夹&gt;样式文件夹&gt;然后你的DatagridStyles.xaml文件:

        <Application.Resources>
                <ResourceDictionary>
                    <ResourceDictionary.MergedDictionaries>
                        <ResourceDictionary Source="Resources/Styles/DatagridStyles.xaml"/>
                    </ResourceDictionary.MergedDictionaries>
                </ResourceDictionary>
            </Application.Resources>

        </Application>

这使您可以全局访问2个数据网格样式

然后,您可以将样式分配给数据网格,如下所示......

        <DataGrid Style="{StaticResource DataGrid1Style}">
        </DataGrid>

        <DataGrid Style="{StaticResource DataGrid2Style}">
        </DataGrid>

让我知道这是否有效