微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 样式未正确应用

这是我的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,FallbackValue=0}" ItemsSource="{Binding Path=Months,UpdateSourceTrigger=PropertyChanged}" />
<ComboBox Selectedindex="{Binding Path=BirthdayYear,FallbackValue=0}" ItemsSource="{Binding Path=Years,UpdateSourceTrigger=PropertyChanged}" />

结果很混乱:

enter image description here

它是否以某种方式与TextBlock样式发生冲突?
由于应用了FontWeight,似乎有连接?!

注意:

我可以看到Binding不同的唯一“明显”差异:

Day Year是整数的集合,而Month是字符串的集合?!

解决方法

这是由于数据的类型以及您没有定义显示数据的方式这一事实:ItemTemplate,ItemTemplateSelector或StringFormat

如果您添加< Setter Property =“ItemStringFormat”Value =“{} {0}”>< / Setter>

所有组合框都将正确显示.

ItemsControl.UpdateSelectionBoxItem是负责在选择框中显示数据的函数,但我无法确定在提取显示Item的过程中它是如何以不同的方式处理int的.

无论如何,如果我把它弄好的话,int显示为TextBlocks,String显示为TextBox,这就是你使用你的Style的原因.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐