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)
就这样!
您可以通过定义 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)
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)
| 归档时间: |
|
| 查看次数: |
8693 次 |
| 最近记录: |