如何仅设置数据网格中的那些按钮的样式



在 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>

最新更新