一、前言

在ComboBox中嵌入若干个CheckBox时,当我们勾选一些CheckBox,ComboBox会显示相应的勾选项。

例如:CheckBox项有A,B,C   那么勾选这三项,ComboBox会显示A,B,C

但有时候我们会发现,点击CheckBox时,ComboBox会出现对象的名称,而不是我们想要的text

例如:CheckBox有三项A,B,C 它们的类型都是XModel类型,Text分别为A,B,C。 有时候ComboBox会显示成"XModel"

为了解决这个问题,网上有这么几个方法,大多是重写ComboBox:

1. https://www.codeproject.com/articles/563862/multi-select-combobox-in-wpf

2. http://blog.sina.com.cn/s/blog_7f83849b010164yp.html

但是这些方法太麻烦

二、示例

View部分:

 <ComboBox Grid.Row="" 
Grid.Column=""
Margin=""
x:Name="checkedComboBox"
IsEditable="True"
IsReadOnly="True"
ItemsSource="{Binding ModelTypes}"
Text="{Binding Text,Mode=OneWay}"
VerticalAlignment="Bottom" >
<ComboBox.ItemTemplate>
<DataTemplate DataType="{x:Type projectSetting:ModelType}">
<CheckBox Content="{Binding Name}"
IsChecked="{Binding IsChecked, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>

View的后台部分:

 checkedComboBox.DropDownClosed += CheckedComboBox_DropDownClosed;

  private void CheckedComboBox_DropDownClosed(object sender, System.EventArgs e)
{
BSViewModel vm = DataContext as BSViewModel;
vm.UpdateText();
}

ViewModel部分:

  public void UpdateText()
{
switch (CheckedRootModelTypes.Count)
{
case :
Text = "<无>";
break;
case :
Text = CheckedRootModelTypes.First().Name;
break;
default:
Text = string.Join(";",
CheckedRootModelTypes.Select(x => x.Name).ToArray());
break;
} RaisePropertyChanged(() => Text);
}

也就是说在ComboBox的DropDownClose中实现ViewModel中的Text刷新操作即可。

【MVVM Dev】ComboBox嵌入CheckBox的显示问题的更多相关文章

  1. dev combobox edit 怎么设置让选项清空

    dev combobox edit 怎么设置让选项清空 功能需求: 点击combobox edit1的选项A 使得 combobox edit2出现选项a: 然后再点击combobox edit1的选 ...

  2. Android(java)学习笔记138:html嵌入到java显示乱码

    解决方案: 使用 loadData方法是中文部分会出现乱码,即使指定“utf-8”.“gbk”.“gb2312”也一样. webView.getSettings().setDefaultTextEnc ...

  3. C# dev GridControl绑定数据不能显示

    如题, dev GridControl绑定数据不能显示时可检查数据操作顺序 view = advBandedGridView1 as AdvBandedGridView; //第1 this.advB ...

  4. Android(java)学习笔记80:Html嵌入到Java显示乱码

    1. Html嵌入到Java显示乱码: 解决方案: 使用 loadData方法是中文部分会出现乱码,即使指定“utf-8”.“gbk”.“gb2312”也一样. webView.getSettings ...

  5. 【MVVM DEV】DataColumn中的TextBox与ComboBox的并存

    一.前言       在WPF编程中,有时候我们使用DataGrid会需要在一个DataColumn中既有TextBox,也要有ComboBox或者TextBlock等其他数据显示样式. 这个时候我们 ...

  6. 【MVVM Dev】多个具有依赖性质的ComboBox对数据的过滤

    一.前言 在界面编程中,我们常常会遇到具有依赖性质的ComboBox框,比如最常见的: 省/直辖市 => 地级市/区 => 区/街道 今天就说一下在WPF的MVVM模式中如何实现该功能 二 ...

  7. easyui combobox 带 checkbox

    $('#cc').combobox({ url:'combobox_data1.json', method:'get', valueField:'id', textField:'text', pane ...

  8. 【转】listView中,checkBox的显示和隐藏

    原文网址:http://www.cnblogs.com/vicma/p/3460500.html 在listView中,每个item都有一个ChexBox,当显示的时候在listView外面设置一个按 ...

  9. easyUI的combobox设置隐藏和显示

    今天遇到一个需求,需要在combobox选择不同选项时,分别切换另一个控件为text或者combobox. 当时想了各种办法,想将combobx和text切换隐藏,但是都没得到自己想要的效果.最终还是 ...

随机推荐

  1. Azkaban 工作流调度器

    Azkaban 工作流调度器 1 概述 1.1 为什么需要工作流调度系统 a)一个完整的数据分析系统通常都是由大量任务单元组成,shell脚本程序,java程序,mapreduce程序.hive脚本等 ...

  2. vscode eslint格式化配置

    { // vscode默认启用了根据文件类型自动设置tabsize的选项 "editor.detectIndentation": false, // 重新设定tabsize &qu ...

  3. 第七章移动互联网与移动IP

    第七章移动互联网与移动IP 本章延续前几章节,对该章节内容进行归纳总结. 文章中的Why表示产生的背景,也就是说为什么会产生该技术,What表示该技术是什么,How表示该技术是如何使用的.以下将用字母 ...

  4. git remote add origin错误

    如果输入$ Git remote add origin git@github.com:djqiang(github帐号名)/gitdemo(项目名).git 提示出错信息:fatal: remote ...

  5. Jenkins+git+Nginx

    1.Jenkins 一.tomcat安装 1.下载JDK和Tomcat //通过wget下载 wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomca ...

  6. 接口测试工具Postman接口测试图文教程

    Postman接口测试工具使用 一.前言     在前后端分离开发时,后端工作人员完成系统接口开发后,需要与前端人员对接,测试调试接口,验证接口的正确性可用性.而这要求前端开发进度和后端进度保持基本一 ...

  7. Wacom将在CES 2015上发布全新旗舰版Cintiq

    Cintiq 27QHD和Cintiq 27QHD touch拥有宽大的工作表面,以及令人惊喜的屏幕笔触和颜色性能. 2015年1月6日,Wacom发布了Cintiq 27QHD和Cintiq 27Q ...

  8. Python3 迭代器和生成器

    想要搞明白什么是迭代器,首先要了解几个名词:容器(container).迭代(iteration).可迭代对象(iterable).迭代器(iterator).生成器(generator). 看图是不 ...

  9. 【转】SWFUpload 官方说明文档(2.5.0版)

    原文出自:http://www.runoob.com/w3cnote/swfupload-document.html SWFUpload使用指南请查阅:http://www.w3cschool.cc/ ...

  10. “Hello World!“”团队第五周召开的第二次会议

    今天是我们团队“Hello World!”团队第五周召开的第二次会议.也祝大家双十一快乐~~博客内容: 一.会议时间 二.会议地点 三.会议成员 四.会议内容 五.todo list 六.会议照片 七 ...