【问题标题】:WPF: MVVM Create custom dependency property for devExpress ControlsWPF:MVVM 为 devExpress 控件创建自定义依赖项属性
【发布时间】:2013-10-30 21:48:07
【问题描述】:

我知道你可以为 wpf 控件创建自定义控件和依赖属性,就像这里解释的 http://msdn.microsoft.com/en-us/library/ms753358.aspx,我想知道你是否可以以与 devExpress 控件相同的方式创建自定义依赖属性?以及如何?

comboxBoxEdit 控件中无法绑定多个项目。我想在 ComboBoxEdit 上创建一个名为 SelectedItems 的依赖项属性。

我已经在普通 ComboBox 上创建了一个名为 SelectedEnumeration 的自定义属性,它直接绑定到枚举并获取值。无需使用 ObjectDataProvider。

【问题讨论】:

  • 当然可以 - 您只需指定 DP 所属的类型(在您给出的示例中,它将是 typeof(WhateverDxControl) 而不是 typeof(AquariumObject)。还有一些多选示例AP/DP 的浮动用于常规 WPF 列表框,您应该能够适应其中之一。

标签: c# wpf xaml mvvm devexpress


【解决方案1】:

comboxBoxEdit 控件中无法绑定多个项目。

错了。检查DevExpress.Xpf.Editors.CheckedComboBoxStyleSettings

基本上,您可以将ComboBoxEdit.EditValue 绑定到一个集合,该集合将填充所选项目。

<dxe:ComboBoxEdit ItemsSource="{Binding MyItems}"
                  EditValue="{Binding SelectedItems}">
    <dxe:ComboBoxEdit.StyleSettings>
        <dxe:CheckedComboBoxStyleSettings />
    </dxe:ComboBoxEdit.StyleSettings>
</dxe:ComboBoxEdit>

视图模型:

public class SomeViewModel
{
    public ObservableCollection<MyClass> MyItems {get;set;}

    public ObservableCollection<MyClass> SelectedItems {get;set;}
}

我已经在普通 ComboBox 上创建了一个自定义属性,名为 SelectedEnumeration 直接绑定到枚举并获取 价值。无需使用 ObjectDataProvider。

您在 UI 上承担了太多责任,而它不属于它。创建一个合适的 ViewModel 并让 ViewModel 处理您的数据,以便于常规 DataBinding 到 UI。不要诉诸反射和其他类型的不必要的技巧来将逻辑放在错误的层中。

【讨论】:

  • 感谢您的回复。那么,我应该避免使用任何自定义 UI 元素吗?我已经在这样做了。我只是认为创建自定义属性并使用它会很容易。
  • @SoftDev 有时您需要创建自定义 UI 元素,但只有在需要新的 UI 特定功能时才会出现这种情况。您在这里谈论的是与数据的交互,它应该真正发生在 ViewModel 上,而不是 UI。
  • 我做了与您在上面解释的相同的事情,它加载了我的项目是枚举的数据,所以,我使用 ObjectDataProvider 它填充它但不设置 selecteditems 并给我一个错误说。无法转换值“system.collections.generic.list[System.Object]”。
  • @SoftDev 删除 ObjectDataProvider。我不知道那是什么,但你不需要它。另外,我认为您需要一个虚拟转换器。检查 DevExpress 支持以了解执行此操作的正确方法。
  • 我认为您还没有使用绑定枚举。您必须使用 ObjectDataProvider 来获取枚举值并将其绑定到控件。看看这个msdn.microsoft.com/en-us/library/bb613576.aspx
猜你喜欢
  • 1970-01-01
  • 2012-08-07
  • 1970-01-01
  • 2012-08-29
  • 1970-01-01
  • 1970-01-01
  • 2019-05-26
  • 1970-01-01
  • 2019-12-24
相关资源
最近更新 更多