1

ここに画像の説明を入力Textblock のみを対象としているのに、以下のコードが WPF で色またはボタンのコンテンツもオレンジ色にする理由を本当に不思議に思っています。ターゲットをボタンに変更すると、正常に機能し、ボタンのコンテンツにのみ適用され、テキストブロックには適用されません。この奇妙な動作はなぜですか?

<Style TargetType="{x:Type TextBlock}">
            <Setter Property="Foreground" Value="orange" />
</Style>
4

1 に答える 1

1

基本的に、WPF で表示されるテキストのほとんどは、Window最終的に に変換されTextBlockます。<Button Content="ABC"/>WPF が実際に何を行うかを指定すると、ビジュアル ツリーが作成されたときに入れ<TextBlock Text="ABC"/>られます。したがって、暗黙のスタイルは適用されませんが、そのコンテンツの一部です。WPF コントロールには、最終的にすべてのテキストが終了するまで、他のコントロールから構築できる他のコントロールから構築されたデフォルトのテンプレートがあります。これが、Microsoft が保護を配置し、通常は最も基本的なものを保護するために継承された要素にのみテンプレートで暗黙的に適用されるためです。から直接継承されるのような要素Button.ContentContentPresenterButtonTextBlock

TextBlockStyleSystem.Windows.Controls.ControlTextBlockSystem.Windows.FrameworkElement、望ましくない動作、パフォーマンスの問題、またはエラーを引き起こす可能性のある複雑なスタイルを無意識のうちに適用することから. したがって、暗黙的TextBlockなスタイルをWindow.Resources、またはその子アイテムの 1 つに指定すると、テンプレートに自動的に適用されず、Buttonデフォルトの色が保持されます。移動しない限りApplication.Resources、テンプレートにも適用され、Buttonテキストは次のようになります。オレンジ。

于 2013-07-02T09:00:55.217 に答える