c# – 样式未正确应用
发布时间:2020-12-15 22:32:03 所属栏目:百科 来源:网络整理
导读:这是我的Xaml: Style TargetType="ComboBox" Setter Property="VerticalContentAlignment" Value="Center" / Setter Property="Foreground" Value="Black" / Setter Property="Margin" Value="5" //StyleStyle TargetType="TextBlock" Setter Property="Ver
这是我的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}" /> 结果很混乱: 它是否以某种方式与TextBlock样式发生冲突? 注意: 我可以看到Binding不同的唯一“明显”差异: Day Year是整数的集合,而Month是字符串的集合?! 解决方法
这是由于数据的类型以及您没有定义显示数据的方式这一事实:ItemTemplate,ItemTemplateSelector或StringFormat
如果您添加< Setter Property =“ItemStringFormat”Value =“{} {0}”>< / Setter> 所有组合框都将正确显示. ItemsControl.UpdateSelectionBoxItem是负责在选择框中显示数据的函数,但我无法确定在提取和显示Item的过程中它是如何以不同的方式处理int的. 无论如何,如果我把它弄好的话,int显示为TextBlocks,String显示为TextBox,这就是你使用你的Style的原因. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |