将相同的动态样式应用于网格中的所有相同类型的元素

时间:2016-05-24 15:18:30

标签: c# wpf styling dynamicresource

我有一个充满标签的网格,它们都使用相同的样式,即DynamicResource:

<Label Grid.Row="0" Style="{DynamicResource MyStyle}"/>
<Label Grid.Row="1" Style="{DynamicResource MyStyle}"/>
<Label Grid.Row="2" Style="{DynamicResource MyStyle}"/>

有没有办法只为网格中的所有标签设置一次样式?我尝试了this way,但BasedOn不适用于DynamicResources

2 个答案:

答案 0 :(得分:1)

一种方法是使用MergedDictionaries,如下所示:

<UserControl.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/assemblyName;component/yourStyle.xaml"/>
        </ResourceDictionary.MergedDictionaries>
        <!--If you want to include additional resources you need to place them here-->
        <SolidColorBrush x:Key="TextBox.Static.Border" Color="#FFABAdB3"/>
    </ResourceDictionary>
</UserControl.Resources>

然后在您的网格中,您可以像这样使用它:

<Grid>
    <Grid.Resources><!-- This will only use the style in the Grid-->
        <Style TargetType="Label" BasedOn="{StaticResource MyStyle}"/>
    </Grid.Resources>
</Grid>  

现在,这应该仅针对网格使用您的样式,或Label使用Style="{StaticResource myStyle}"

答案 1 :(得分:0)

您可以执行以下操作:

    <Window.Resources>

    <Style TargetType="Label">

    ...

    </Style>

    </Window.Resources>