WPF StackPanel.Resources для более чем одного типа элемента управления? - PullRequest
3 голосов
/ 16 февраля 2011

Я хочу использовать установщик для установки поля по умолчанию для всех элементов моей стековой панели, не только для кнопок, но также для текстовых полей и надписей.

    <StackPanel>
        <StackPanel.Resources>
            <Style TargetType="{x:Type Button}">
                <Setter Property="Margin" Value="0,10,0,0"/>
            </Style>
        </StackPanel.Resources>
        ...

Когда я пытаюсь изменить вышеуказанную кнопку на Control или FrameworkElement (производный тип каждого элемента), это не работает.

Как я могу это исправить, не указав 2 разных Style элемента с одинаковым содержимым, но с разными типами x: TypetType?

1 Ответ

8 голосов
/ 16 февраля 2011

Вы можете сделать это с наследованием через атрибут Style * BasedOn :

        <StackPanel.Resources>
            <Style x:Key="BaseStyle" TargetType="{x:Type FrameworkElement}">
                <Setter Property="Margin" Value="0,10,0,0"/>
            </Style>

            <Style TargetType="{x:Type Label}" BasedOn="{StaticResource BaseStyle}" />
            <Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource BaseStyle}" />
            <Style TargetType="{x:Type Button}" BasedOn="{StaticResource BaseStyle}" />

        </StackPanel.Resources>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...