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

WPF列表视图数据绑定

  •  1
  • Jose  · 技术社区  · 15 年前

    我有一个列表视图,它有一个列数据绑定到列表。计数如下:

    <ListView.View>
        <GridView>
            <GridViewColumn Header="Contacts" DisplayMemberBinding="{Binding Path=Contacts.Count}"/>
            <GridViewColumn Header="Notes" DisplayMemberBinding="{Binding Path=Notes.Count}"/>
        </GridView>
    </ListView.View>
    

    该列表实现InotifyCollectionChanged。但是当我向列表中添加一个项时,listview列不会刷新。我的装订有问题吗?我可以这样做:

        void _Contacts_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
        {
            OnPropertyChanged("Contacts");
        }
    

    它基本上引发集合的PropertyChanged事件。这迫使WPF重新绑定,但我不希望有大量的事件在我的代码中传播(尤其是不必要的事件)。

    有什么想法吗?

    2 回复  |  直到 6 年前
        1
  •  1
  •   Arcturus    15 年前

    问题是,在为联系人引发已更改的属性时,不会为Count属性引发事件。

    你可以用

    OnPropertyChanged("Count")
    

    在您的列表中,因为您的列表实现了inotifyPropertiesChanged接口…

        2
  •  1
  •   SergioL    15 年前

    或者,您可以从ObservableCollection派生。它内置了所有的变更通知代码,从长远来看可以为您节省一些时间。