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 =?