使我的Style特定于单个实例

时间:2012-10-29 22:46:19

标签: .net wpf xaml

我的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,它也正在使用该样式。

有没有办法不这样做?我可以让它只影响特定的网格吗?

1 个答案:

答案 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>