我想在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);
}
这就是全部!
答案 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>