2017-02-21 11 views
1

У меня есть стили 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> 

ответ

2

Вы можете использовать наследование стиля с помощью 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}"/> 
+0

Спасибо. Я не знаю, почему я не думал о таргетинге на «FrameworkElement». –

 Смежные вопросы

  • Нет связанных вопросов^_^