WPF。如何强制listitem重绘自己?

时间:2010-02-16 15:29:05

标签: wpf styles refresh listboxitem

我有一个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>

它确实有效。我遇到的问题是在单击某个项目时获取更新样式。对象被填充,然后应该使样式从斜体变为正常。

我可以做些什么来强制ListItemListBox重绘自己并更新样式?或者,当HasData属性发生变化时,我应该使用某种通知吗?

1 个答案:

答案 0 :(得分:2)

您应该确保在INotifyPropertyChanged类中实现Person接口,并在每次更改"HasData"属性时发出带有HasData参数的change事件。这是一个好地方,在酒店的安排。这是绑定WPF组件自行更新的关键。