码迷,mamicode.com
首页 > 其他好文 > 详细

ComboBox过滤

时间:2019-07-08 19:26:38      阅读:95      评论:0      收藏:0      [点我收藏+]

标签:center   combobox   事件   ica   microsoft   img   box   send   base   

在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过滤

标签:center   combobox   事件   ica   microsoft   img   box   send   base   

原文地址:https://www.cnblogs.com/noctwolf/p/11153095.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!