gpt4 book ai didi

c# - 将多个组合框绑定(bind)到同一个集合但只过滤一个

转载 作者:行者123 更新时间:2023-11-30 20:50:43 27 4
gpt4 key购买 nike

我有一个自定义控件 SearchableComboBox,它继承自 ComboBox。它只是在项目控件上方有一个文本框,用于过滤可见项目,目前通过设置 Items.Filter。

我的表单上有多个 SearchableComboBoxes,它们都绑定(bind)到同一个集合。我希望它们可以独立搜索,但是按照我现在连接的方式,如果我过滤一个然后它们都会被过滤(如果一个已经有一个与过滤器不匹配的选择,它的选择就会被清除)。

我还尝试将 UnfilteredItems 属性添加到 SearchableComboBox,绑定(bind)到它,然后使用从 UnfilteredItems 创建的 CollectionView 作为 ItemsSource,然后通过 CollectionView 进行过滤。这提供了完全相同的功能,其中所有 SearchableComboBoxes 都被一起过滤。

在此先感谢您提供的任何帮助。

最佳答案

您必须使用与您的 ItemsSource 关联的 CollectionViewSource.GetDefaultView(),它将始终返回与您的源集合相关的 ICollectionView 的相同实例.

相反,创建新的 CollectionViewSource 并绑定(bind)其 View 属性,这对于您的绑定(bind)来说是唯一的。

像这样:

private ICollectionView customView;
public ICollectionView CustomView
{
get
{
if (customView== null)
{
customView= new CollectionViewSource()
{ Source = SourceCollection }.View;
customView.Filter = p => !(p as CustomClass).BoolProperty;
}
return customView;
}
}

关于c# - 将多个组合框绑定(bind)到同一个集合但只过滤一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22331920/

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