我有一个使用MVVM的对话框实现,它可以正常使用绑定等。所以在ViewModel中更新复选框。
但是,我现在已经使用WPF Binding.ValidationRules
实施了验证,并在对话框中向BindingGroup
添加了stackpanel
:
<StackPanel.BindingGroup>
<BindingGroup NotifyOnValidationError="True">
</BindingGroup>
</StackPanel.BindingGroup>
所以我可以捕获所有验证错误。但添加BindingGroup
也意味着我对ViewModel的绑定不再适用于复选框。
任何人都清楚为什么复选框突然不起作用,但我的文本框仍然有效?
答案 0 :(得分:1)
您需要致电CommitEdit
:
BindingGroup
if (stackPanel1.BindingGroup.CommitEdit())
{
stackPanel1.BindingGroup.BeginEdit();
}
也许,Button
上的某个UserControl
在点击事件处理程序或Checked
的{{1}}事件处理程序中执行此操作?
答案 1 :(得分:1)
如果您正在寻找MVVM验证,请继续使用INotifyDataErrorInfo。
最佳实践是实现INotifyDataErrorInfo接口(如果您使用的是.NET 4.5)或IDataErrorInfo接口。 Please refer to the blog post about data validation in WPF for more information and code samples: