代码之家  ›  专栏  ›  技术社区  ›  paul

WPF。如何强制ListItem重新绘制自己?

  •  0
  • paul  · 技术社区  · 15 年前

    我有一个 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 列表框 重新绘制并更新样式?或者当hasdata属性更改时,我应该使用某种通知吗?

    1 回复  |  直到 13 年前
        1
  •  2
  •   ddso    15 年前

    INotifyPropertyChanged Person "HasData" HasData