欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ComboBox过滤

程序员文章站 2022-04-09 15:46:28
在View中完成数据筛选,无需改变数据源的内容,这样就不必担心在其它地方也使用这个数据源。 从路由事件 TextBoxBase.TextChanged 中获取输入的文本,并设置视图的过滤器就可以了。 CollectionViewSource.GetDefaultView 方法是返回一个 IColle ......

在view中完成数据筛选,无需改变数据源的内容,这样就不必担心在其它地方也使用这个数据源。

从路由事件 textboxbase.textchanged 中获取输入的文本,并设置视图的过滤器就可以了。

collectionviewsource.getdefaultview 方法是返回一个 icollectionview 对象,它是给定源集合的默认视图,然后设置视图的filter属性。

官方文档:

完整示例在我的github

        <combobox width="300" horizontalalignment="center" verticalalignment="center" 
                  itemssource="{binding democollection, relativesource={relativesource findancestor, ancestortype={x:type local:mainwindow}}}" 
                  iseditable="true" istextsearchenabled="false"
                  textboxbase.textchanged="combobox_textchanged"/>
        private void combobox_textchanged(object sender, textchangedeventargs e)
        {
            if (sender is combobox combobox)
            {
                var view = (collectionview)collectionviewsource.getdefaultview(combobox.itemssource);
                view.filter = f => f is string s && s.contains(combobox.text);
            }
        }

demo运行效果图

ComboBox过滤