gpt4 book ai didi

c# - Collection ViewSource 通过在文本框中输入来过滤列表框

转载 作者:行者123 更新时间:2023-12-02 05:08:24 24 4
gpt4 key购买 nike

我在 WPF 中有一个列表框,其中列出了用户的名字和姓氏。我有一个文本框,我试图在按名称键入时进行过滤。这是我正在尝试的:(当我在文本框中输入时,没有任何内容被过滤)

这是我的虚拟机

        #region Members

private CollectionViewSource usercvs = new CollectionViewSource();
private string searchString;

#endregion

#region Properties

public string SearchFilter
{
get
{
return this.searchString;
}

set
{
if (!string.IsNullOrEmpty(this.searchString))
AddFilter();

usercvs.View.Refresh();
this.searchString = value;
}
}

#endregion

#region Methods

private void AddFilter()
{
usercvs.Filter -= new FilterEventHandler(Filter);
usercvs.Filter += new FilterEventHandler(Filter);

}

private void Filter(object sender, FilterEventArgs e)
{
// see Notes on Filter Methods:
var src = e.Item as User;
if (src == null)
e.Accepted = false;
else if (src.LastName != null && !src.LastName.Contains(SearchFilter))
e.Accepted = false;
}

#endregion
}
}

最佳答案

向您的 ViewModel 添加一个附加属性以公开 CollectionViewSource 并将您的 ListBox 绑定(bind)到该属性。

public CollectionViewSource FilteredUsers{
get {
return usercvs.View;
}
}

当您将任何过滤器应用于 CollectionViewSource 时,ObservableCollection 不会更改,因此您将始终看到所有项目。 Filter 应用于 CollectionViewSource,过滤后的结果可以通过类的属性 View 访问。

关于c# - Collection ViewSource 通过在文本框中输入来过滤列表框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15900306/

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