2016-12-28 7 views
0

私は私のテキストブロックのすべてがineritしたい私のアプリケーションのリソース内のスタイルを定義しました:TextTlockがTextBlockスタイルを継承しないようにするにはどうすればよいですか?

<Style TargetType="{x:Type TextBlock}"> 
    <Setter Property="Effect"> 
     <Setter.Value> 
      <DropShadowEffect BlurRadius="1" ShadowDepth="0" /> 
     </Setter.Value> 
    </Setter> 
    <Setter Property="Foreground" Value="White" /> 
    <Setter Property="FontFamily" Value="Arial" /> 
    <Setter Property="FontWeight" Value="Bold" /> 
</Style> 

私が通過すると、明示的に各テキストブロックにスタイルを決定する必要がありますする必要はありません - ちょうど私すべての人がこのスタイルを自然に継承してほしい。

残念ながら、私がツールチップを定義すると、そのツールチップもこのスタイルを選択します。私はそれがそのデザインのどこかにTextBlockを組み込んでいるからだと思っています。

私が大丈夫なのは、定義された各ツールチップを使いこなす必要があるということです(アプリケーション全体で遍在することが少ないため)。継承されたテキストブロックスタイルをオーバーライドするツールチップスタイルを定義する方法がある場合は、それでいいよ。

私は、ツールチップがTextBlockスタイルを継承しないようにするために何ができますか?

+0

'TextBlock'にグローバルなデフォルトスタイルを設定するのはひどい考えです。これが理由です。デフォルトの 'TextBlock'スタイルは、普遍的ではなく、必要な場所にのみ設定してください。スタイル付きテキストインスタンスに 'TextBlock'の代わりに' Label'を使うことを考えてみましょう。パディング/マージンなどのスタイルを設定して、正確に見た目を見せることができます。 –

答えて

1

TextBlockにグローバルな暗黙のスタイルを設定するのはひどい考えです。これが理由です。 TextBlockはテキストを表示するプリミティブです。暗黙的なTextBlockスタイルは、普遍的ではなく、必要な場所でのみ設定する方がはるかに優れています。

また、スタイル付きテキストインスタンスにTextBlockの代わりにLabelを使用し、暗黙的にLabelスタイルを使用することを検討してください。それがLabelが存在する理由の1つです。パディング/マージンなどのスタイルを設定して、正確に見た目を見せることができます。

しかし、あなたが悪い意思決定を回避するために迅速かつ汚いかつ簡単な方法をしたい場合、あなたはそのおじいちゃんは、エルアラメインで一般的なロンメルをflummoxために使用される、暗黙的なスタイルの局在-内-スタイルのトリックを使用することができます。

<Style TargetType="ToolTip"> 
    <Style.Resources> 
     <!-- Implicit style for TextBlocks within ToolTips --> 
     <Style TargetType="TextBlock"> 
      <Setter Property="Foreground" Value="Black" /> 
      <Setter Property="FontWeight" Value="Regular" /> 
      <Setter Property="Effect" Value="{x:Null}" /> 
     </Style> 
    </Style.Resources> 

    <Setter Property="Foreground" Value="Black" /> 
    <Setter Property="FontWeight" Value="Regular" /> 
    <Setter Property="Effect" Value="{x:Null}" /> 
</Style> 
関連する問題