组合框中的样式设备

时间:2011-05-17 08:05:37

标签: wpf

我有简单的窗口:

<Window.Resources>
    <Style TargetType="{x:Type TextBlock}">
        <Setter Property="Foreground" Value="Red"/>
    </Style>
</Window.Resources>

<StackPanel>
    <ComboBox VerticalAlignment="Top" HorizontalAlignment="Left">
        <ComboBoxItem IsSelected="True" Content="1"/>
        <ComboBoxItem Content="2"/>
        <ComboBoxItem Content="3"/>
    </ComboBox>
</StackPanel>

但这种风格不适用于组合框。如果我将它移动到app.xaml它开始工作。 有人可以解释这种奇怪的行为吗?

2 个答案:

答案 0 :(得分:2)

App.xaml中的样式应用于模板中,这意味着如果ComboBoxItem在内部创建仅受这些全局样式影响的TextBlock。

要更改文字颜色,您应在ComboBox本身设置ForegroundTextElement.Foreground(您也可以使用样式)。

答案 1 :(得分:0)

你可以这样做

    <Window.Resources>
<Style TargetType="{x:Type Control}" x:Key="TextStyle">
            <Setter Property="Foreground" Value="Red"/>
        </Style>
        <Style TargetType="{x:Type ComboBox}" BasedOn="{StaticResource TextStyle}">            
        </Style>
    </Window.Resources>