WPF ObservableCollection Item' s

时间:2016-02-18 14:06:51

标签: wpf data-binding datatrigger

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

任何想法如何利用绑定来刷新?

1 个答案:

答案 0 :(得分:4)

对于您的ObservableCollection,您不需要实现INotifyPropertyChanged,因为它已经可观察

但是对于您的Status属性,您需要实现它,否则您的View将不知道该属性已更改。