我的wpf应用程序有这种风格:
的Xaml:
<Style x:Key="customTableViewDataRowStyle" TargetType="{x:Type xcdg:DataRow}">
C#
this.Resources.Add(typeof(DataRow), this.FindResource("customTableViewDataRowStyle"));
它修改了Xceed Datagrid中Row的外观。
这一切都很棒!
但我去了我的应用程序并添加了另一个Xceed Datagrid,它也正在使用该样式。
有没有办法不这样做?我可以让它只影响特定的网格吗?
答案 0 :(得分:1)
您可以将样式分隔为独立的ResourceDictionary,然后仅在所需的DataGrids中引用ResourceDictionary。
有两个DataGrids的示例,其中只有一个具有样式集:
CustomDataGridStyles.xaml:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style TargetType="{x:Type DataGrid}">
<Setter Property="Background" Value="Red" />
<!-- Other Style Settings -->
</Style>
</ResourceDictionary>
窗口:
<Window x:Class="SpecificControlStyle.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<DataGrid Grid.Row="0">
<DataGrid.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="CustomDataGridStyles.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</DataGrid.Resources>
</DataGrid>
<DataGrid Grid.Row="1" />
</Grid>
</Window>