combobox重写扩展

 private void Form1_Load(object sender, EventArgs e)
        {
           
           DataTable dt = new DataTable();
            dt.Columns.Add("id",typeof(string));
            dt.Columns.Add("title", typeof(string));
            DataRow dr = dt.NewRow();
            dr[0] = "ALL";
            dr[1] = "全部";
            dt.Rows.Add(dr);
            for (int i = 0; i < 10000; i++)
            {
                DataRow ndr = dt.NewRow();
                ndr[0] =(i+1);
                ndr[1] = "测试"+(i+1);
                dt.Rows.Add(ndr);
            }
            List<Record> records = new List<Record>()
            { 
              new Record() {id="A001",title="张三",age=1},
              new Record() { id = "A002", title = "李四", age = 2 } ,
              new Record() { id = "A003", title = "王五", age = 3 },
              new Record() {id="A004",title="赵设定",age=1},
              new Record() { id = "A005", title = "钱发", age = 2 } ,
              new Record() { id = "A006", title = "孙老弟", age = 3 },
              new Record() {id="A007",title="周士",age=1},
              new Record() { id = "A008", title = "吴零四", age = 2 } ,
              new Record() { id = "A009", title = "郑少东", age = 3 },
              new Record() {id="A0010",title="张三",age=1},
              new Record() { id = "A0011", title = "李四", age = 2 } ,
              new Record() { id = "A0012", title = "王五", age = 3 },
            };
           
            ucCtrlCombbox2.DataSource = dt;
            ucCtrlCombbox2.DisplayMember = "title";
            ucCtrlCombbox2.ValueMember = "id";
             ucCtrlCombbox2.ToPinYinfield = "title";
           
            ucCtrlCombbox1.DataSource = records;
            ucCtrlCombbox1.DisplayMember = "title";
            ucCtrlCombbox1.ValueMember = "id";
            ucCtrlCombbox1.ToPinYinfield = "title";
           // ucCtrlCombbox1.Indexfield = "title";
            // this.ucCtrlCombbox1.SelectedIndex = -1;
        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WPF ComboBox 是一个常用的控件,可以用于展示一组可选择的数据项,并允许用户从中选择一个或多个项。 通过扩展WPF ComboBox,我们可以对其外观和功能进行自定义。其中一种常见的扩展是添加水印文本。WPF ComboBox 默认情况下不支持显示水印,但我们可以通过自定义控件模板来实现这一功能。可以在控件模板中添加一个TextBox,设置其样式为水印文本样式,并通过绑定将ComboBox的SelectedItem与TextBox的Text属性进行关联。 另一个常见的扩展是实现自动完成功能。WPF ComboBox 默认提供了自动完成功能,但仅根据输入文本匹配项的开头。如果希望根据包含的文本进行匹配,可以通过扩展ComboBox的ItemsSource属性,并在文本变化时重新筛选项集合来实现。可以自定义一个筛选器方法,将其应用于ComboBox的ItemsSource属性,并利用Text属性的变化来触发筛选。 还可以扩展WPF ComboBox以实现异步加载选项。当数据量较大或者需要远程加载选项时,可能会遇到加载时间过长的问题。为了解决这个问题,我们可以通过在ComboBox中添加一个Loading状态的文本,在异步加载过程中显示加载状态,直到数据加载完成后再显示选项集合。 总而言之,WPF ComboBox 可以通过自定义控件模板、实现自动完成功能、异步加载选项等方式进行扩展,提供更加灵活和丰富的功能和外观定制。这些扩展可以根据具体需求来实现,以满足不同场景下对ComboBox的定制需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值