彩票走势图

DevExpress WPF使用技巧教程:使用WPF Data Editors时如何实现多选

原创|使用教程|编辑:龚雪|2020-07-06 10:14:30.823|阅读 364 次

概述:通过DevExpress WPF Controls,您能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

下载DevExpress v20.1完整版 DevExpress v20.1汉化资源获取

通过DevExpress WPF Controls,您能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。

如何启用多重选择

默认情况下,ComboBoxEdit、LookUpEdit和ListBoxEdit编辑器使用单个选择。 要在这些编辑器中启用多个选择,您需要更改其操作模式 - 在其StyleSettings属性中使用相应的设置对象:

<dxe:ComboBoxEdit ...>
<dxe:ComboBoxEdit.StyleSettings>
<dxe:CheckedComboBoxStyleSettings/>
</dxe:ComboBoxEdit.StyleSettings>
</dxe:ComboBoxEdit>

我们在以下帮助主题中描述了可用的设置对象:

注意:在In-Place模式下定义这些编辑器时,将使用ComboBoxEditSettings、LookUpEditSettings和ListBoxEditSettings对象,这些对象也具有StyleSettings属性:

<dxg:GridColumn ...>
<dxg:GridColumn.EditSettings>
<dxe:ComboBoxEditSettings ...>
<dxe:ComboBoxEditSettings.StyleSettings>
<dxe:CheckedComboBoxStyleSettings/>
</dxe:ComboBoxEditSettings.StyleSettings>
</dxe:ComboBoxEditSettings>
</dxg:GridColumn.EditSettings>
</dxg:GridColumn>

在ListBoxEdit和ListBoxEditSettings中,可以通过将属性设置为Multiple或Extended来启用多重选择(请参阅:)。

绑定数据

启用多个选择的编辑器在其EditValue属性中使用List Object数据类型的值,在编辑器中选择项目时,它将使用选定的值创建List Object数据类型的新实例,哪些值将存储在此列表中取决于您是否定义ValueMember属性。

假设您具有以下Item类,Items集合属性(在编辑器的ItemsSource属性中使用)和SelectedItems属性(在EditValue属性中使用):

public class Item
{
public int Id { get; set; }
public string Name { get; set; }
}
...

public ObservableCollection<Item> Items { get; set; } 
= new ObservableCollection<Item>(Enumerable.Range(0, 10)
.Select(c => new Item
{
Id = c,
Name = "Item #" + c
}));

public List<Object> SelectedValues { get; set; }

如果您不定义ValueMember

<dxe:ListBoxEdit ItemsSource="{Binding Items}"
EditValue="{Binding SelectedValues}"
DisplayMember="Name">
<dxe:ListBoxEdit.StyleSettings>
<dxe:CheckedListBoxEditStyleSettings/>
</dxe:ListBoxEdit.StyleSettings>
</dxe:ListBoxEdit>

EditValue和SelectedValues属性将包含List Object以及从Items中选择的Item对象。

DevExpress WPF控件使用教程

如果您定义ValueMember

<dxe:ListBoxEdit ItemsSource="{Binding Items}"
EditValue="{Binding SelectedValues}"
ValueMember="Id"
DisplayMember="Name">
<dxe:ListBoxEdit.StyleSettings>
<dxe:CheckedListBoxEditStyleSettings/>
</dxe:ListBoxEdit.StyleSettings>
</dxe:ListBoxEdit>

 EditValue和SelectedValues属性将包含List Object以及从ItemsSource中选择的Item对象的Id属性值:

DevExpress WPF控件使用教程

注意:

  • 如果在EditValue的List Object实例中添加值或从中删除值,则编辑器将不会选择/取消选择相应的项目。 而是使用所需的一组值创建一个新的List Object实例,并在EditValue中使用它;
  • 当您未在ItemSource中定义ValueMember并使用复杂对象*时,EditValue的List Object中的值应来自编辑器的ItemsSource。 在上面的示例中,如果要在代码中设置SelectedValues,则需要使用Items集合中的Item实例将其设置为List Object:SelectedValues = new List<object>() { Items[0], Items[2], Items[4] };否则,编辑器将无法确定应从源中选择哪些对象。
在GridControl单元格中的使用

要为某个GridColumn指定in-place编辑器,请使用我们在此帮助主题中描述的方法:,编辑器的EditValue与您在GridColumn中定义的数据项属性相关联:将列绑定到数据源字段。

在编辑器中启用多选时,它在其EditValue中使用List Object,但是FieldName不支持编辑集合属性, 这就是为什么您将无法在下面的GridColumn单元格中编辑SelectedValues属性的原因:

public class GridDataItem {
...
public List<Object> SelectedValues { get; set; }
...
}

<dxg:GridColumn FieldName="SelectedValues" ...>
<dxg:GridColumn.EditSettings>
<dxe:ComboBoxEditSettings ...>
<dxe:ComboBoxEditSettings.StyleSettings>
<dxe:CheckedComboBoxStyleSettings/>
</dxe:ComboBoxEditSettings.StyleSettings>
</dxe:ComboBoxEditSettings>
</dxg:GridColumn.EditSettings>
</dxg:GridColumn>

在这种情况下启用编辑使用以下方法:

1. 在GridColumn中使用GridControl的Binding属性。

您还需要在绑定表达式中将Mode设置为TwoWay,以便在使用Binding属性时启用编辑:

<dxg:GridColumn Binding="{Binding Path=SelectedValues, Mode=TwoWay}" ...>
<dxg:GridColumn.EditSettings>
<dxe:ComboBoxEditSettings ...>
<dxe:ComboBoxEditSettings.StyleSettings>
<dxe:CheckedComboBoxStyleSettings/>
</dxe:ComboBoxEditSettings.StyleSettings>
</dxe:ComboBoxEditSettings>
</dxg:GridColumn.EditSettings>
</dxg:GridColumn>

2. 将基础数据项的属性类型更改为Object:

public class GridDataItem {
...
public Object SelectedValues { get; set; }
...
}

<dxg:GridColumn FieldName="SelectedValues" ...>
<dxg:GridColumn.EditSettings>
<dxe:ComboBoxEditSettings ...>
<dxe:ComboBoxEditSettings.StyleSettings>
<dxe:CheckedComboBoxStyleSettings/>
</dxe:ComboBoxEditSettings.StyleSettings>
</dxe:ComboBoxEditSettings>
</dxg:GridColumn.EditSettings>
</dxg:GridColumn>


DevExpress技术交流群2:775869749      欢迎一起进群讨论

慧都高端UI界面开发

标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn

文章转载自:慧都网

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP