尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

如何在WPF中实现ComboBox多选 - 教程

如何在WPF中实现ComboBox多选 - 教程
📅 发布时间:2026/6/18 16:49:00

如何在WPF中实现ComboBox多选 - 教程

在前面我介绍过WPFDevelopers这个项目

https://blog.csdn.net/zhaotianff/article/details/142941026

WPFDevelopers是一个优秀的WPF UI库。

它里面包含了一个MultiSelectComboBox控件,可以支持多选。

使用方法如下:

1、首先我们使用nuget引入 WPFDevelopers 0.0.0.2

image

2、然后修改App.xaml如下

1 7     8         9             
10                 
11                 
12             
13         
14     
15 

3、在界面上放置MultiSelectComboBox 

1 
10     
11         
12 
13         
14     
15 

4、设置多选项显示时的分隔符

默认是  ;,我们可以设置为其它字符,例如|

1 
2 
3 

5、设置显示类型

通过MultiSelectComboBox.ShowType属性可以设置MultiSelectComboBox的显示类型

可选Tag和Text(默认)

Text显示效果

image

Tag显示效果

image

6、启用/禁用搜索

通过MultiSelectComboBox.IsSearch属性可以设置MultiSelectComboBox是否显示搜索框

IsSearch = true

image

IsSearch = false

image

7、增加多列显示

这里我们可以通过数据模板来控制显示,

这个功能不过多介绍,跟其它列表控件的数据模板使用方法一致。

如果对数据模板功能不了解,可以参考下面的链接

https://learn.microsoft.com/zh-cn/dotnet/desktop/wpf/data/data-templating-overview

1 8     9         
12     
13     
14         
15             
16                 
17                     
18                     
22                     
26                 
27                 
32                 
37                 
42             
43         
44     
45 

运行效果

16f7055011d871e50af1e2129213b8ed

8、添加项

我们先创建一个实体Student

1  public class Student2  {3      public int Id { get; set; }4 5      public string Name { get; set; }6 7      public override string ToString()8      {9          return $"{Id}-{Name}";
10      }
11  }

然后创建一个实体列表并绑定到MultiSelectComboBox上

1 ObservableCollection students = new ObservableCollection();
2 students.Add(new Student() { Id = 1, Name = "张三" });
3 students.Add(new Student() { Id = 2, Name = "李四" });
4 students.Add(new Student() { Id = 3, Name = "王五" });
5 
6  //设置数据源
7 this.combox.ItemsSource = students;

也可以直接使用系统提供的基础类型,如string、int等

对于系统提供的基础类型,下位项和选中项会显示实际值。

对于对象,如果我们需要控制它的下位项和选中项的显示值,可以通过重写ToString()函数(不指定字段)或者通过DisplayMemberPath属性指定字段。

9、手动设置选中项

1  //假设选中1,3项
2  var student1 = students.ElementAt(0);
3  var student3 = students.ElementAt(2);
4  var selectedList = new ObservableCollection() { student1, student3 };
5 
6  //设置选中项
7  this.combox.SelectedItemsExt = selectedList;

10、全选/取消全选

1 //全选
2 this.combox.SelectAll();
3 
4 //取消全选
5 UnselectAll

11、获取选中项

1  var selectedItems = this.combox.SelectedItems;
2 
3  foreach (Student student in selectedItems)
4  {
5      MessageBox.Show(student.Id.ToString() + "-" + student.Name);
6  }

运行效果:

demo

示例代码

下载

相关新闻

  • 详细介绍:SQL Server 2019实验 │ 管理SQL Server的安全性
  • 都在转型,我们能做什么?
  • Java Map

最新新闻

  • 如何快速掌握Azure Data Studio:面向新手的跨平台数据库管理完整指南
  • 2026兰州物流仓库快速堆积门生产厂 - 精选优质企业推荐官
  • 2026安徽省淮北市中考500分左右怎么办?冲刺高中补充方案最新发布 - 小张zc
  • 095、PCIE物理层测试模式:从信号眼图到误码率实战
  • 2026年国内垂直升降/水平旋转智能货柜生产厂家综合排行 - 起跑123
  • 2026年建站服务哪家靠谱?高口碑商家汇总! - FaiscoJeff

日新闻

  • 2026年不锈钢卷板厂家推荐排行榜:冷轧热轧/304/201不锈钢卷板,高颜值耐腐蚀源头厂家实力精选 - 企业推荐官【官方】
  • FLUX.1-dev FP8模型实战指南:24GB以下显卡高效部署方案
  • 2026佛山长途搬家价目表:跨省跨市搬家费用完整计算指南 - 从来都是英雄出少年

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号