Дублирование в стилях XAML

У меня есть стили xaml, у которых разные типы целей, но в остальном они идентичны. Есть ли способ, которым я мог бы вырезать дублирование и определить стиль только один раз?

<Style TargetType="TextBlock">            
    <Setter Property="Height" Value="{StaticResource ElementHeight}"/>
    <Setter Property="MinWidth" Value="{StaticResource ElementMinWidth}"/>
    <Setter Property="Margin" Value="{StaticResource ElementMargin}"/>
</Style>

<Style TargetType="TextBox">
    <Setter Property="Height" Value="{StaticResource ElementHeight}"/>
    <Setter Property="MinWidth" Value="{StaticResource ElementMinWidth}"/>
    <Setter Property="Margin" Value="{StaticResource ElementMargin}"/>
</Style>

<Style TargetType="ComboBox">
    <Setter Property="Height" Value="{StaticResource ElementHeight}"/>
    <Setter Property="MinWidth" Value="{StaticResource ElementMinWidth}"/>
    <Setter Property="Margin" Value="{StaticResource ElementMargin}"/>
</Style>

1 ответ

Решение

Вы можете использовать наследование стилей с помощью Style.BasedOn.

Сначала определите базовый стиль:

   <Style x:Key="BaseStyle" TargetType="FrameworkElement">
        <Setter Property="Height" Value="80"/>
        <Setter Property="MinWidth" Value="80"/>
        <Setter Property="Margin" Value="80"/>
    </Style>

Затем "наследуйте" стили от тех элементов управления, которые вы хотите:

    <Style TargetType="TextBlock" BasedOn="{StaticResource BaseStyle}"/>
    <Style TargetType="TextBox" BasedOn="{StaticResource BaseStyle}"/>
    <Style TargetType="ComboBox" BasedOn="{StaticResource BaseStyle}"/>
Другие вопросы по тегам