2017-02-21 9 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'を対象にしていないと思ったのか分かりません。 –

関連する問題