WPF 列表框 + 绑定 + IDataErrorInfo =?

Posted

技术标签:

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

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

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

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

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

【问题讨论】:

你能发布你的代码吗?定义“不起作用”?你有错误吗?是否调用了 IDataErrorInfo 的实现? 【参考方案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

【讨论】:

以上是关于WPF 列表框 + 绑定 + IDataErrorInfo =?的主要内容,如果未能解决你的问题,请参考以下文章

将 ObservableCollection 绑定到 WPF 列表框

WPF 列表框 + 绑定 + IDataErrorInfo =?

如何将 DataGrid 中的文本框绑定到 Wpf 中的列表?

选定的 WPF 列表框绑定仅更新视图中的项目

将 Dictionary<T> 绑定到 WPF 列表框

WPF 数据绑定组合框到列表<string>