我有一个ListBox
,其中包含描述一个人的对象。单击该项目时,此对象仅部分填充并完全填充(耗时的操作)。我想改变那些尚未填充的对象的样式,以便部分填充的项目以斜体显示。
我做了ItemTemplate
:
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" Style="{StaticResource PersonWithData}"/>
</DataTemplate>
</ListBox.ItemTemplate>
并定义了Style
:
<Style x:Key="PersonWithData" TargetType="{x:Type TextBlock}">
<Style.Triggers>
<DataTrigger Binding="{Binding HasData}" Value="True">
<Setter Property="FontStyle" Value="Normal"/>
</DataTrigger>
<DataTrigger Binding="{Binding HasData}" Value="False">
<Setter Property="FontStyle" Value="Italic"/>
</DataTrigger>
</Style.Triggers>
</Style>
它确实有效。我遇到的问题是在单击某个项目时获取更新样式。对象被填充,然后应该使样式从斜体变为正常。
我可以做些什么来强制ListItem
或ListBox
重绘自己并更新样式?或者,当HasData属性发生变化时,我应该使用某种通知吗?
答案 0 :(得分:2)
您应该确保在INotifyPropertyChanged
类中实现Person
接口,并在每次更改"HasData"
属性时发出带有HasData
参数的change事件。这是一个好地方,在酒店的安排。这是绑定WPF组件自行更新的关键。