WPF:在不知道项目的情况下更改ComboBox的FontSize

时间:2011-03-02 12:55:15

标签: wpf combobox styles font-size

我想在wpf中为某些FontSize es设置ComboBox。但我找到的唯一解决方案是设置特定FontSize的{​​{1}}。但是项目是动态添加的(所以我可以在ComboBoxItem上听,并且每次都设置样式,但这非常难看)。 有没有办法为ItemsChanged的所有项目设置FontSize

EDIT1: ComboBox本身也会动态添加到代码中。

EDIT2:根据您的回答,必须是这样的:

ComboBox

但它也没有效果!

EDIT3:以下是我添加项目的方式:

<Style TargetType="ComboBox" x:Key="MyComboBox"">
    <Setter Property="ItemContainerStyle" Value="{DynamicResource MyComboItemStyle}"/>
</Style>
<Style x:Key="MyComboItemStyle" TargetType="{x:Type ComboBoxItem}">
    <Setter Property="FontSize" Value="14"/>
</Style>

EDIT4:这是组合框的初始化:

string[] strEnums = //Some dynamic magic;
foreach (string str in strEnums)
{
    (input as ComboBox).Items.Add(strEnum);
}

这就是全部!

2 个答案:

答案 0 :(得分:5)

1.如果您要为整个FontSize设置ComboBox,可以设置FontSize本身的ComboBox属性:

<ComboBox FontSize="18" ...>
   ...
</ComboBox>

2.如果您只想更改项目的FontSize或根据某些条件更改字体大小,您应指定`ItemContainerStyle':

<ComboBox ...>
   <ComboBox.ItemContainerStyle>
       <Style TargetType="{x:Type ComboBoxItem}">
           <Setter Property="FontSize" Value="18"/>
       </Style>
   </ComboBox.ItemContainerStyle>
   ...
</ComboBox>

答案 1 :(得分:4)

您可以通过定义ComboBox的ItemTemplate来定义渲染所有项目的方式。在那里,你绑定到绑定项的属性。

示例:

<ComboBox ItemsSource="{Binding whateverbinding}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Content}" FontSize="12" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>