有个需要,在ComboBoxEdit中选择多个值,并且要求可以直接在后面添加新的值。

开始的时候绑定列表,设置DisplayMember,不能修改。

然后绑定List<string>,不设置DisplayMember,可以修改,但如果再次显示下拉框的时候,上面的值显示为:System.Collections.Generic.List`1[System.Object]

后发现当有修改选择后的值时,显示下拉框不会变,于是计划在收起popup时,在其值的后面加上一个    ";"   ,刚好可以用于分隔新增加的。

XAML:

                        <dxlc:LayoutItem Label="实验方法:" Height="30">
<dxe:ComboBoxEdit x:Name="checkedComboBox"
NullText="选择试验方法,添加新方法以 ; 分开"
IsTextEditable="True"
ItemsSource="{Binding Testmethod}"
EditValue="{Binding SelectedTestmethod}"
PopupClosed="checkedComboBox_PopupClosed"
ShowCustomItems="True">
<dxe:ComboBoxEdit.StyleSettings>
<dxe:CheckedComboBoxStyleSettings />
</dxe:ComboBoxEdit.StyleSettings>
</dxe:ComboBoxEdit>
</dxlc:LayoutItem>

XAML.cs

        public static List<string> ConvertToDesiredType(object list)
{
List<string> returnList = new List<string>();
var type = list.GetType();
foreach (var item in (IEnumerable<dynamic>)list)
{
returnList.Add(item.ToString());
}
return returnList;
} private void checkedComboBox_PopupClosed(object sender, DevExpress.Xpf.Editors.ClosePopupEventArgs e)
{
if (e.EditValue == null)
return;
var type = e.EditValue.GetType();
if (type.Name.ToString().ToLower() == "string")
{
return;
}
var li = ConvertToDesiredType(e.EditValue);
string edit = string.Empty;
if (li != null)
{
for (int i = 0; i < li.Count; i++)
{
edit += li[i] + ";";
}
}
checkedComboBox.EditValue = edit;
}

上面的ConvertToDesiredType方法,出自于:https://www.csdn.net/tags/MtjaggxsNzA0MTktYmxvZwO0O0OO0O0O.html

效果:

缺点:下拉框出现后,不能勾选已选择的项目,如果此时点  OK  ,上面的值会清空。

WPF dxe:ComboBoxEdit 选择项后并可编辑值的更多相关文章

  1. wpf ListBox删除选择项(支持多项)

    搞了个ListBox删除选择项,开始老是不能把选择项删除干净,剩下几个.后来调试一下原来是ListBox在删除一个选择项之后立即更新,选择项也有变化.结果我想了个这样的方法来删除呵呵. Departm ...

  2. WPF中使用后台代码来控制TreeView的选择项(SelectedItem)以及展开节点操作

    首先为TreeView控件制作一个Style: <Style x:Key="LibraryTreeViewItemStyle" TargetType="{x:Typ ...

  3. WPF ItemControl的源与选择项问题

    具体场景: datagrid的行中有个combox 每个行是一个实例A 每个行中的SelectedItem是实例A的一个属性B 我希望实现datagrid的复制Command,具体做法是A序列化反序列 ...

  4. jquery选中将select下拉框中一项后赋值给text文本框

    jquery选中将select下拉框中一项后赋值给text文本框,出现无法将第一个下拉框的value赋值给文本框 因为select默认选中第一项..在选择第一项时,便导致无法激发onchange事件. ...

  5. Chosen中选择项的更新

    Chosen 选择项的动态修改/更新 如果你需要去动态更新select选择框里的选择项,你需要通知Chosen去响应这个变动,你需要在这个选项框是触发一个"liszt:updated&quo ...

  6. CentOS6.9-zabbix3.2启动失败原因及页面没有mysql选择项

     环境内核信息: [root@zabbix- ~]# uname -a Linux lodboyedu- -.el6.x86_64 # SMP Tue Mar :: UTC x86_64 x86_64 ...

  7. springMVC 复选框带有选择项记忆功能的处理

    前言:由于jsp管理页面经常会遇到复选框提交到JAVA后台,后台处理逻辑完成后又返回到jsp页面,此时需要记住jsp页面提交时复选框的选择状态,故编写此功能! 一.复选框的初始化 1.1.jsp页面 ...

  8. bootstrap-datepicker 与bootstrapValidator同时使用时,选择日期后,无法正常触发校验

    bootstrap-datepicker 与bootstrapValidator同时使用时,选择日期后,无法正常触发校验 (解决办法) http://blog.csdn.net/biedazhangs ...

  9. 解决QML开发中ComboBox中一个已选择项没有清除的问题

    解决QML开发中ComboBox中一个已选择项没有清除的问题 近期使用QML开发一个项目.须要使用ComboBox进行显示.当进行一个操作时,须要向ComboBox加入一个元素,当进行另外一个操作时. ...

  10. 如何在 WPF 中获取所有已经显式赋过值的依赖项属性

    原文:如何在 WPF 中获取所有已经显式赋过值的依赖项属性 获取 WPF 的依赖项属性的值时,会依照优先级去各个级别获取.这样,无论你什么时候去获取依赖项属性,都至少是有一个有效值的.有什么方法可以获 ...

随机推荐

  1. Paddiing 组件

    一.Flutter Paddiing 组件 在 html 中常见的布局标签都有 padding 属性,但是 Flutter 中很多 Widget 是没有 padding 属性.这个时候我们可以用 Pa ...

  2. 跨时钟域之异步FIFO

    参考:https://www.cnblogs.com/aslmer/p/6114216.html 文章:Simulation and Synthesis Techniques for Asynchro ...

  3. C++实现单链表相关操作

    #include<iostream>#include<cstdlib>//C++动态分配存储空间using namespace std;#define OK 1#define ...

  4. Centos8——Nginx下载安装 & 部署项目

    Centos8--Nginx下载安装 & 部署项目 官网:http://nginx.org/ 官网下载:http://nginx.org/en/download.html 创建文件夹 ps: ...

  5. ubuntu 系统增加源和删除源文件

    一.添加PPA源文件 语法格式:sudo add-apt-repository ppa:user/ppa-name 示例: sudo add-apt-repository ppa:sergiomeji ...

  6. java 是值传递还是引用传递

    首先要明白,修改一个对象,可以是 修改对象的属性值,也能使建立新的引用(指向另一个对象)两种情况 值传递 在函数调用的过程中,参数是 变量的副本,就是复制出来的一个对象,函数中无论怎么修改和原来的变量 ...

  7. 记事本默认编码改为UTF-8

    前端时间发现用记事本直接创建的记录目标信息的TXT文本再用sublime打开变成了乱码,才发现编码有问题,记事本直接创建的文本编码竟然是ANSI编码. 于是动手将记事本默认编码改为UTF-8. 记事本 ...

  8. MFC工程调用cJSON.c出现C1853错误的解决办法(老版本C文件加入新的C++项目)

    环境 Visual Studio 2017 现象 头文件cJSON.h与源文件cJSON.c添加入工程后,编译出现如下C1853错误. cjson.c : fatal error C1853: &qu ...

  9. nodejs redis执行lua脚本

    const Redis = require("ioredis"); const redis = new Redis({ port: 6300, // Redis port host ...

  10. Python的入门学习之 Day 7——from“夜曲编程”

    Day 7 time: 2021.8.4. 今天主要将"if-else"再扩展, 得到"if-elif-else"模型.它与"if-else" ...