如何仅对DataGrid中的那些按钮设置样式?

时间:2019-06-14 06:03:02

标签: c# wpf

在App.xaml中,我已经设置了所有按钮的样式。

    <Style TargetType="Button">
        <Setter Property="Margin" Value="3"/>
    </Style>

我意识到,如果Button在DataGrid中,那么我就不需要页边距了。我有很多DataGrid,我将这段代码一个接一个地放入其中。

        <DataGrid.Resources>
            <Style TargetType="Button">
                <Setter Property="Margin" Value="0"/>
            </Style>
        </DataGrid.Resources>

还有更聪明的方法吗?

3 个答案:

答案 0 :(得分:1)

您可以为Style定义DataGrid,并在其中为特定修改添加子控件样式。

如果要将此Style添加到所有DataGrid中,则无需定义Key

<Style x:Key="dataGrid" TargetType="DataGrid">
    <Style.Resources>
        <Style TargetType="Button">
            <Setter Property="Margin" Value="0" />
        </Style>
    </Style.Resources>
</Style>

答案 1 :(得分:0)

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

答案 2 :(得分:0)

使用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"/>