在 App.xaml 中,我已经设置了所有按钮的样式。
<Style TargetType="Button">
<Setter Property="Margin" Value="3"/>
</Style>
我意识到如果按钮在数据网格中,那么我不需要边距。我有很多 DataGrid,我把这段代码一一放进去。
<DataGrid.Resources>
<Style TargetType="Button">
<Setter Property="Margin" Value="0"/>
</Style>
</DataGrid.Resources>
有没有更聪明的方法可以做到这一点?
您可以为DataGrid
定义Style
,并在其中将子控件样式添加到特定修改。
如果要将此Style
添加到所有数据网格,则无需定义Key
。
<Style x:Key="dataGrid" TargetType="DataGrid">
<Style.Resources>
<Style TargetType="Button">
<Setter Property="Margin" Value="0" />
</Style>
</Style.Resources>
</Style>
在 Window.Resources 或 App.Resources 中使用键声明样式,如下所示。
<Window.Resources>
<Style TargetType="Button" x:Key="dataGridButtonStyle">
<Setter Property="Margin" Value="3"/>
<Setter Property="Background" Value="Wheat"/>
</Style>
</Window.Resources>
然后使用带有键的 StaticResource 将样式应用于控件(在此示例中,键名称为 dataGridButtonStyle(
<Button Style="{StaticResource ResourceKey= dataGridButtonStyle}" Content="Hello"/>
请在 Windows 或用户控件级别添加资源文件,以便它将应用所有子控件,如下所示,
<Window.Resources>
<Style TargetType="DataGrid">
<Style.Resources>
<Style TargetType="Button">
<Setter Property="Background" Value="Red" />
<Setter Property="Margin" Value="0" />
</Style>
</Style.Resources>
</Style>
<Window.Resources>
或
<UserControl.Resources>
<Style TargetType="DataGrid">
<Style.Resources>
<Style TargetType="Button">
<Setter Property="Background" Value="Red" />
<Setter Property="Margin" Value="0" />
</Style>
</Style.Resources>
</Style>
</UserControl.Resources>