多くのウィンドウとユーザーコントロールを備えたWPFアプリケーションがあり、アプリケーション全体に表示される特定のコントロールに標準スタイルを実装したいと思います。例として、アプリケーション全体で2つの標準TextBlockが必要だとします。1つは大きな見出し用、もう1つは小さな見出し用です。そして、それらの唯一の違いは、フォントサイズ、たとえばそれぞれ36と24です。他のすべてのプロパティ(色、フォントファミリなど)は、TextBlockテンプレートまたはグローバルTargetType = "{x:TypeTextBlock}"スタイルで設定できます。
もちろん、フォントサイズを設定し、それらのstaticresourceスタイルをXAML全体で自由にTextBlockに適用する、または他のTextBlockに干渉しないTextBlockの可能な限り高いレベルで、2つのグローバルな名前付きスタイルを作成することもできます。しかし、多くの場所でStyleタグを設定する必要がなくなる代替手段として、TextBlockから継承するのが良い方法ですか?
TextBlockコントロール:
class TextBlockLargeHeading : TextBlock
{
public TextBlockLargeHeading()
{ }
}
class TextBlockSmallHeading : TextBlock
{
public TextBlockSmallHeading()
{ }
}
グローバルリソース:
<Application.Resources>
<Style TargetType="TextBlock">
<Setter Property="Foreground" Value="Red" />
</Style>
<Style TargetType="MyApp:TextBlockLargeHeading" BasedOn="{StaticResource {x:Type TextBlock}}" >
<Setter Property="FontSize" Value="36" />
</Style>
<Style TargetType="MyApp:TextBlockSmallHeading" BasedOn="{StaticResource {x:Type TextBlock}}" >
<Setter Property="FontSize" Value="24" />
</Style>
</Application.Resources>
次に、それらをどこでも使用するには、カスタムテキストブロックを参照するだけです。
<StackPanel>
<MyApp:TextBlockLargeHeading Text="Large" />
<MyApp:TextBlockSmallHeading Text="Small" />
</StackPanel>
これにより、適切なフォントサイズで2つの赤いTextBlockが作成されます。
これは合理的なアプローチですか?保守性の観点から、またはその他の方法で、これらのインスタンスが100個ある場合、落とし穴はありますか?より良い(より安全またはより少ないコード/ XAML)アプローチはありますか?おそらく代わりにユーザーコントロールを使用していますか?
ありがとう!