0

我有一个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 属性更改时使用某种通知?

4

1 回答 1

2

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

于 2010-02-16T15:47:15.493 回答