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

Spe*_*ish 2 wpf combobox styles font-size

我想在wpf中设置FontSize一些ComboBoxes.但我找到的唯一解决方案是设置FontSize特定的ComboBoxItems.但这些项目是动态添加的(所以我ItemsChanged每次都可以收听并设置样式,但这非常难看).有没有办法设置一般的FontSize所有项目ComboBox

EDIT1:ComboBox自身也在动态地添加代码上课.

编辑2:按照你的答案,它必须是这样的:

<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>
Run Code Online (Sandbox Code Playgroud)

但它也没有效果!

编辑3:这是我添加项目的方式:

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

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

input = new ComboBox();
input.SetResourceReference(ComboBox.StyleProperty, "MyComboBox");
Run Code Online (Sandbox Code Playgroud)

就这样!

fix*_*gon 5

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

例子:

<ComboBox ItemsSource="{Binding whateverbinding}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Content}" FontSize="12" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
Run Code Online (Sandbox Code Playgroud)


Pav*_*kov 5

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

<ComboBox FontSize="18" ...>
   ...
</ComboBox>
Run Code Online (Sandbox Code Playgroud)

2.如果要FontSize根据某些条件更改仅项目或更改字体大小,则应指定"ItemContainerStyle":

<ComboBox ...>
   <ComboBox.ItemContainerStyle>
       <Style TargetType="{x:Type ComboBoxItem}">
           <Setter Property="FontSize" Value="18"/>
       </Style>
   </ComboBox.ItemContainerStyle>
   ...
</ComboBox>
Run Code Online (Sandbox Code Playgroud)