对网格中所有同类元素应用相同的动态样式
Apply same dynamic style to all elements of same kind in grid
我有一个充满标签的网格,它们都使用相同的样式,即动态资源:
<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
。
您可以这样做:
<Window.Resources>
<Style TargetType="Label">
...
</Style>
</Window.Resources>
一种方法是像这样使用 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}"
。
我有一个充满标签的网格,它们都使用相同的样式,即动态资源:
<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
。
您可以这样做:
<Window.Resources>
<Style TargetType="Label">
...
</Style>
</Window.Resources>
一种方法是像这样使用 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}"
。