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