gpt4 book ai didi

c# - 将 ObservableCollection 绑定(bind)为不同 CollectionViewSource 的源

转载 作者:太空宇宙 更新时间:2023-11-03 11:06:32 28 4
gpt4 key购买 nike

我有一个 ObservableCollection<MyClass>名为 myCollection应该绑定(bind)到两个 CollectionViewSource小号( AllItemsSelectedItems )。

AllItems的源属性绑定(bind)到 myCollection . SelectedItems的源属性应该绑定(bind)到 myCollection IsSelected == true 项目.

public class MyClass : INotifyPropertyChanged
{
//fields and interface implementations
public string Name {//proper code};
public bool? IsSelected {//proper code};
}

// some where else in the MainWindow
AllItems.Source = myCollection;
SelectedItems.Source = myCollection.Where(input=>input.IsSelected==true);

问题: 加载窗口时一切正常。但是当IsSelected myCollection 中某些项目的值(value)显然改变了它对SelectedItems没有影响.因此,为了克服这个问题,我更新了 SelectedItems 的源属性。每次IsSelected属性已更改。

问题:我怎样才能进行这些类型的绑定(bind),这样就不需要手动更新 SelectedItems 的源属性了? ?

谢谢。

最佳答案

首先,您应该无条件地删除您的手动过滤设置并替换为更合适的设置。选择要替换的内容主要取决于您的目标 .NET 版本。

如果以 .NET 4.5 为目标,那么一个简单的解决方案是启用 live filtering在 Collection View 上。

对于较早版本的 .NET,您无论如何都必须进行一些手动操作,但最好只调用 Refresh在重新绑定(bind)控件的 Collection View 上。为此,您应该通过设置 Filter 将过滤推迟到 Collection View 本身。来自 XAML 的事件处理程序。

关于c# - 将 ObservableCollection 绑定(bind)为不同 CollectionViewSource 的源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15663965/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com