6

アプリケーションに TextBlocks と Comboboxes があり、Textblock の前景を白、Combobox の前景を黒にしたいと考えています。

私が試したのは:

    <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

<Style TargetType="{x:Type TextBlock}">
    <Setter Property="Foreground" Value="White" />
</Style>
<Style TargetType="{x:Type ComboBox}">
    <Setter Property="Foreground" Value="Red" />
</Style>
</ResourceDictionary>



<Grid Background="Black">
    <TextBlock Height="23" HorizontalAlignment="Left" Margin="27,30,0,0" Name="textBlock1" Text="TextBlock" VerticalAlignment="Top" />
    <ComboBox Height="23" HorizontalAlignment="Left" Margin="12,99,0,0" Name="comboBox1" VerticalAlignment="Top" Width="120" />
</Grid>

しかし、コンボボックスの前景はまだ白ですコンボボックスの TextBlock Foreground をオーバーライドする方法は? (CSSではこれは簡単ですが、WPFではわかりません)

TextBlock のスタイルを削除すると、他のすべてが正常に変更されますが、スタイルを元に戻すと、すべての前景が白になります。

4

2 に答える 2

14

スタイルをネストするには、それらを親のリソースに含めることができます。Combobox スタイルの TextBlock.Foreground プロパティを変更することもできます

<Style TargetType="{x:Type ComboBox}">
    <Style.Resources>
        <Style TargetType="{x:Type TextBlock}">
            <Setter Property="Foreground" Value="Black" />
        </Style>
    </Style.Resources>
    <Setter Property="Foreground" Value="Black" />
    <Setter Property="textBlock.Foreground" Value="Black" />
</Style>
于 2012-12-13T10:57:39.623 に答える
1

ComboBoxItemのスタイルを設定してみてください

<Style TargetType="{x:Type TextBlock}">
    <Setter Property="Foreground" Value="White"/>
    <Setter Property="Background" Value="Black"/>
</Style>
<Style TargetType="{x:Type ComboBoxItem}">
    <Setter Property="Foreground" Value="White"/>
    <Setter Property="Background" Value="Black"/>
</Style>
<Style TargetType="{x:Type ComboBox}">
    <Setter Property="Foreground" Value="White"/>
    <Setter Property="Background" Value="Black"/>
</Style>
于 2012-12-13T11:15:41.927 に答える