gpt4 book ai didi

c# - 过滤 ObservableCollection?

转载 作者:可可西里 更新时间:2023-11-01 08:16:32 26 4
gpt4 key购买 nike

当我将 ListBox 直接绑定(bind)到 ObservableCollection 时,我的 ListBox 中显示了实时更新,但是一旦我在混合中添加其他 LINQ 方法,我的 ListBox 就不再收到 ObservableCollection 的任何更改通知。

这里,我举个例子说明一下;

public partial class MainPage : PhoneApplicationPage
{
ObservableCollection<String> Words = new ObservableCollection<string>();

public MainPage()
{
InitializeComponent();
listBox1.ItemsSource = Words;
}

private void AddButton_Click(object sender, RoutedEventArgs e)
{
Words.Add(DateTime.Now.ToString());
}
}

在这里,我向一个简单的页面添加了一个按钮和一个列表框,单击按钮使新项目立即出现在列表框中。

但是,如果我从

        listBox1.ItemsSource = Words;

        listBox1.ItemsSource = Words.Where(w => w.Contains(":"));

ListBox 不再更新。

如何在我的 ObservableCollection 和 ListBox 之间添加一个“过滤器”,并且仍然让它更新而无需再次设置 .ItemsSource?

最佳答案

尝试像这样使用 CollectionViewSource:

WordsView = new CollectionViewSource();
WordsView.Filter += Words_Filter;
WordsView.Source = Words;

// ...
void Words_Filter(object sender, FilterEventArgs e)
{
if (e.Item != null)
e.Accepted = ((string)e.Item).Contains(":");
}

关于c# - 过滤 ObservableCollection?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5782585/

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