WPF中让Combobox具有查找功能

需求:由于combobox绑定的数据源数量比较多,如果让用户在下拉列中查找,难免会不太方便,于是就需要让combobox可以输入内容,并且希望根据用户输入的内容去自动匹配,这样效率就会提高!

先在xaml中添加一个combobox:

 

<Grid>
        <ComboBox IsTextSearchEnabled="False" IsEditable="True"   Height="23" HorizontalAlignment="Left" Margin="12,23,0,0" Name="comboBox1" VerticalAlignment="Top" Width="120"  KeyUp="comboBox1_KeyUp" />

</Grid>

先看设置的属性:
IsEditable就是启用或禁用 ComboBox 的文本框中的文本编辑,让combobox可以输入内容
IsTextSearchEnabled就是是否开启TextSearch,默认是开启的
接着就是给combobox设置数据源了
 
 

 public partial class MainWindow : Window
    {
        List<string> list = new List<string> { "aa", "bb", "abc", "csd", "sdlfks", "osdi", "awd" };
        public MainWindow()
        {
            InitializeComponent();
            comboBox1.ItemsSource = list;
	 }
    

 
在keyup中写代码,根据当前输入的内容去数据源中模糊查找出匹配的数据显示在下拉列中,代码如下:
 
 

private void comboBox1_KeyUp(object sender, KeyEventArgs e)
        {

            List<string> mylist = new List<string>();
            mylist = list.FindAll(delegate(string s) { return s.Contains(comboBox1.Text.Trim()); });
            comboBox1.ItemsSource = mylist;
            comboBox1.IsDropDownOpen = true;
        }

WPF,要实现下拉框多选并且附带搜索功能,可以使用自定义控件或者第三方控件库。其,第三方控件库的“MultiSelectComboBox”控件就可以实现这个功能。 使用步骤如下: 1.在项目添加第三方控件库,并引用控件库的dll文件。 2.在XAML添加控件,并设置样式和属性。 示例代码如下: ```xml <Window x:Class="WpfApp.MultiSelectComboBoxWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:WpfApp" xmlns:custom="clr-namespace:WpfCustomControlLibrary;assembly=WpfCustomControlLibrary" Title="MultiSelectComboBoxWindow" Height="350" Width="525"> <Window.Resources> <Style TargetType="custom:MultiSelectComboBox"> <Setter Property="Width" Value="200"/> <Setter Property="Height" Value="30"/> </Style> </Window.Resources> <Grid> <custom:MultiSelectComboBox x:Name="multiSelectComboBox" ItemsSource="{Binding Items}" DisplayMemberPath="Name" /> </Grid> </Window> ``` 3.在ViewModel添加Items属性,并初始化数据源。 示例代码如下: ```csharp public class MultiSelectComboBoxViewModel { public ObservableCollection<Item> Items { get; set; } public MultiSelectComboBoxViewModel() { Items = new ObservableCollection<Item> { new Item{ Id=1, Name="Item1"}, new Item{ Id=2, Name="Item2"}, new Item{ Id=3, Name="Item3"}, new Item{ Id=4, Name="Item4"}, new Item{ Id=5, Name="Item5"}, }; } } public class Item { public int Id { get; set; } public string Name { get; set; } } ``` 这样就可以实现下拉框多选并且附带搜索功能了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值