Как я могу стилизовать только те кнопки, которые находятся в DataGrid? - PullRequest
0 голосов
/ 14 июня 2019

В 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 ]

1 голос
/ 14 июня 2019

Вы можете определить Style для DataGrid, и в этом случае добавить стиль дочернего элемента управления к определенной модификации.

Если вы хотите добавить это Style ко всем сеткам данных, нет необходимости определять Key.

<Style x:Key="dataGrid" TargetType="DataGrid">
    <Style.Resources>
        <Style TargetType="Button">
            <Setter Property="Margin" Value="0" />
        </Style>
    </Style.Resources>
</Style>
0 голосов
/ 14 июня 2019

Объявите стиль с ключом в 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"/>
0 голосов
/ 14 июня 2019

Пожалуйста, добавьте файл ресурсов на уровне управления 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...