スタイルは<Application.Resources>
アプリケーション全体に適用され、既定のスタイル ルックアップ ルールに常に従うわけではありません。
通常、その動作が望ましくない場合は、<Window.Resources>
代わりにスタイルを配置して、ウィンドウ内のオブジェクトにのみ適用され、通常のスタイル ルックアップ ルールが使用されるようにします。
デフォルトでは、やなどのほとんどのデフォルトの WPF コントロールであるから継承するオブジェクトのスタイルを除き、スタイルはコントロール/テンプレートの境界を越えて適用されません。Control
Label
TextBox
したがって、オブジェクト内の任意のControl
オブジェクトのスタイルを設定し.Resources
て、すべての子オブジェクトに適用できます。
<UserControl.Resources>
<Style TargetType="{x:Type Label}">
<Setter Property="Foreground" Value="Red" />
</Style>
</UserControl.Resources>
ただし、 はand ではなくTextBlock
から継承するため、 a のスタイルはテンプレートの境界を越えて適用されません。FrameworkElement
Control
TextBlock
スタイルを に保持したい場合は、Application.Resources
を作成する直前に、そのスタイルのプロパティをビジュアル ツリーのさらに下に上書きする必要があります。TextBlock
<UserControl x:Class="MyNamespace.MyDataTypeView"... >
<UserControl.Resources>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Foreground" Value="Black" />
</Style>
</UserControl.Resources>
<TextBlock Text="Test" />
</UserControl>
ただし、このスタイルは、内UserControl
のテキストなど、内の別のコントロール内のオブジェクトには適用されません。ComboBoxItems
ComboBox
TextBlock
子コントロール内で使用される は からスタイルを適用しますが、でTextBlock
定義された TextBlock スタイルはコントロール/テンプレートの境界を越えますが、他ので定義された TextBlock スタイルは適用されApplication.Resources
ないため、 からではありません。 <UserControl.Resources>
Application.Resources
X.Resources
x:Static
これらの特定の状況では、色の設定に使用されるブラシ キーを追跡し、次のようTextBlock.Text
に に上書きする必要がある場合があります。ComboBox.Resources
( SystemColorsキーが間違っている可能性があります)
<ComboBox.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.ControlTextBrushKey}" Color="Black" />
</ComboBox.Resources>