【问题标题】:WPF ObservableCollection Item'sWPF ObservableCollection 项目的
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-11
    • 2018-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多