【发布时间】:2016-05-30 17:57:59
【问题描述】:
我有一个绑定到 ListView 的 ObservableCollection:
private ObservableCollection<Cost> m_Costs;
public ObservableCollection<Cost> DatabaseRecords
{
get { return m_Costs; }
}
和
<ListView x:Name="ListView" ItemsSource="{Binding DatabaseRecords, UpdateSourceTrigger=PropertyChanged}">
当我添加或删除项目时,UI 会刷新,没关系。但是,如果我更改集合中某个项目的属性怎么办?我有一个 DataTrigger,它根据属性处理格式化项目:
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Style.Triggers>
<DataTrigger Binding="{Binding Status, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" Value="Removed">
<Setter Property="Foreground" Value="Red" />
</DataTrigger>
</Style.Triggers>
</Style>
</ListView.ItemContainerStyle>
如果我更改 Status 属性,UI 不会刷新。
m_Costs[0].Status = UIStatus.Removed;
知道如何利用绑定刷新吗?
【问题讨论】:
-
您的 Status 属性是如何定义的?我认为 Status 应该实现 INotifyPropertyChanged。
标签: wpf data-binding datatrigger