我有简单的窗口:
<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它开始工作。 有人可以解释这种奇怪的行为吗?
答案 0 :(得分:2)
App.xaml
中的样式应用于模板中,这意味着如果ComboBoxItem在内部创建仅受这些全局样式影响的TextBlock。
要更改文字颜色,您应在ComboBox本身设置Foreground
或TextElement.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>