这是我的Xaml
:
<Style TargetType="ComboBox">
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="Foreground" Value="Black" />
<Setter Property="Margin" Value="5" />
</Style>
<Style TargetType="TextBlock">
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="Margin" Value="5" />
<Setter Property="FontSize" Value="20" />
<Setter Property="FontWeight" Value="Bold" />
<Setter Property="Foreground" Value="White" />
</Style>
<Style TargetType="TextBox">
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="Margin" Value="5" />
<Setter Property="Height" Value="35" />
<Setter Property="FontSize" Value="20" />
</Style>
[...]
<ComboBox SelectedIndex="{Binding Path=BirthdayDay, UpdateSourceTrigger=PropertyChanged, FallbackValue=0}" ItemsSource="{Binding Path=Days, UpdateSourceTrigger=PropertyChanged}" />
<ComboBox SelectedIndex="{Binding Path=BirthdayMonth, UpdateSourceTrigger=PropertyChanged, FallbackValue=0}" ItemsSource="{Binding Path=Months, UpdateSourceTrigger=PropertyChanged}" />
<ComboBox SelectedIndex="{Binding Path=BirthdayYear, UpdateSourceTrigger=PropertyChanged, FallbackValue=0}" ItemsSource="{Binding Path=Years, UpdateSourceTrigger=PropertyChanged}" />
结果非常令人困惑:
它是否以某种方式与TextBlock
Style
发生冲突?
由于FontWeight
已应用,似乎有连接?!
注意:
唯一的&#34;显而易见的&#34;差异我可以看到Binding不同:
Day + Year
是Collection
Integers
,而Month
是Collection
的{{1}}?
答案 0 :(得分:2)
这是由于数据的类型以及您没有定义显示数据的方式这一事实:ItemTemplate,ItemTemplateSelector或StringFormat
如果您添加<Setter Property="ItemStringFormat" Value="{}{0}"></Setter>
所有组合框都会正确显示。
ItemsControl.UpdateSelectionBoxItem是负责在选择框中显示数据的函数,但我无法确定在提取和显示项目的过程中它如何处理int与String的不同。
无论如何,如果我把它弄好的话,int会显示为TextBlocks,String会显示为TextBox,这就是你使用你的Style的原因。
答案 1 :(得分:-1)
也许你可以尝试这样的事情:
<Window.Resources>
<Style x:Key="CommonStyle" TargetType="FrameworkElement">
<Setter Property="Margin" Value="5" />
</Style>
<Style TargetType="ComboBox" BasedOn="{StaticResource CommonStyle}">
</Style>
</Window.Resources>