我有一个ObservableCollection绑定到ListView:
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;
任何想法如何利用绑定来刷新?
答案 0 :(得分:4)
对于您的ObservableCollection,您不需要实现INotifyPropertyChanged,因为它已经可观察。
但是对于您的Status属性,您需要实现它,否则您的View将不知道该属性已更改。