【问题标题】:WPF ListBox + Binding + IDataErrorInfo =?WPF 列表框 + 绑定 + IDataErrorInfo =?
【发布时间】:2010-11-16 15:08:13
【问题描述】:

我有一个 WPF MVVM 应用程序。在视图中,我有一个多选ListBox。在 ViewModel 中,我有一个用于列表中选定项目的属性。

使用类似于this 问题答案中的技术,我可以将我的属性绑定到ListBox

但我也想通过IDataErrorInfo 进行数据验证。我要做的就是检查用户是否至少选择了列表中的一项。在绑定中添加ValidatesOnDataErrors=True 不起作用。

有没有办法让多选列表框与 IDataErrorInfo 数据绑定?

【问题讨论】:

  • 你能发布你的代码吗?定义“不起作用”?你有错误吗?是否调用了 IDataErrorInfo 的实现?

标签: .net wpf validation data-binding listbox


【解决方案1】:

如果您正在使用将 ViewModel 的列表与 ListBox 的选定项绑定的行为,请在添加/删除项后手动更新绑定:

var binding = BindingOperations.GetBindingExpression(this, SelectedItemsListBoxBehavior.SelectedItemsProperty);
if (binding != null)binding.UpdateSource();

【讨论】:

  • binding.ValidateWhithoutUpdate() 可用,但似乎不起作用。
【解决方案2】:

即使是多选 ListBox 也可以绑定 SelectedItem

 SelectedItem="{Binding FakeSelectedItem, ValidatesOnDataErrors=True}"

然后在此属性更改时进行验证。

PS
对于绑定我使用这个解决方案MVVM Multiselect Listbox

【讨论】:

    猜你喜欢
    • 2011-08-28
    • 1970-01-01
    • 2010-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多