WPF ListBox + Binding + IDataErrorInfo =?

3
我有一个WPF MVVM应用程序,在View中我有一个多选的ListBox。在ViewModel中,我有一个属性来存储List中选定的项。
使用类似于这个问题答案中的技术,我可以将我的属性绑定到ListBox上。
但我还想通过IDataErrorInfo进行数据验证。我只想检查用户是否至少选择了列表中的一项。将ValidatesOnDataErrors=True添加到绑定中并不起作用。
是否有任何方法可以使用IDataErrorInfo对多选的列表框进行数据绑定?

你能发布你的代码吗?“不起作用”是什么意思?你是否收到了错误信息?IDataErrorInfo的实现被调用了吗? - Anderson Imes
2个回答

0
如果您正在使用一种行为来绑定ViewModel的列表与ListBox的选定项,请在添加/删除项目后手动更新绑定:
var binding = BindingOperations.GetBindingExpression(this, SelectedItemsListBoxBehavior.SelectedItemsProperty);
if (binding != null)binding.UpdateSource();

binding.ValidateWithoutUpdate() 可用,但似乎不能胜任此工作。 - Fanch

-1

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

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

当此属性更改时,进行验证。

PS
对于绑定,我正在使用此解决方案MVVM多选列表框


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接