WPF dxe:ComboBoxEdit 选择项后并可编辑值


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

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

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

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

XAML:

                        "实验方法:" Height="30">
                            "checkedComboBox"
                                  NullText="选择试验方法,添加新方法以 ; 分开"
                                  IsTextEditable="True"
                                  ItemsSource="{Binding Testmethod}"
                                  EditValue="{Binding SelectedTestmethod}"
                                  PopupClosed="checkedComboBox_PopupClosed"
                                  ShowCustomItems="True">
                                
                                    
                                
                            
                        

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  ,上面的值会清空。