2017-02-21 68 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'。 –