【发布时间】:2010-10-29 15:02:53
【问题描述】:
我正在尝试让 WPF 验证在 MVVM 模式中工作。
在我的视图中,我可以验证这样的文本框,它由代码隐藏方法“HandleError”处理,效果很好:
<TextBox Width="200"
Validation.Error="HandleError">
<TextBox.Text>
<Binding Path="FirstName"
NotifyOnValidationError="True"
Mode="TwoWay">
<Binding.ValidationRules>
<validators:DataTypeLineIsValid/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
但是,我想通过 DelegateCommand 在我的 ViewModel 中处理验证,但是当我尝试使用以下代码时,我得到了显式错误“'{Binding HandleErrorCommand}' is not a valid event handler method名称。只有生成类或代码隐藏类上的实例方法才有效。"
是否有任何解决方法,以便我们可以在 MVVM 模式中处理验证?
查看:
<TextBox Width="200"
Validation.Error="{Binding HandleErrorCommand}">
<TextBox.Text>
<Binding Path="FirstName"
NotifyOnValidationError="True"
Mode="TwoWay">
<Binding.ValidationRules>
<validators:DataTypeLineIsValid/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
视图模型:
#region DelegateCommand: HandleError
private DelegateCommand handleErrorCommand;
public ICommand HandleErrorCommand
{
get
{
if (handleErrorCommand == null)
{
handleErrorCommand = new DelegateCommand(HandleError, CanHandleError);
}
return handleErrorCommand;
}
}
private void HandleError()
{
MessageBox.Show("in view model");
}
private bool CanHandleError()
{
return true;
}
#endregion
【问题讨论】:
标签: c# wpf validation mvvm