我有一个带有OneWay模式的TextBox,因此验证不会自动发生。
<TextBox.Text>
<Binding Path="SelectedValue.Customername"
ElementName="customerListBox"
Mode="OneWay"
>
<Binding.ValidationRules>
<validators:NameValidator ValidatesOnTargetUpdated="True"/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
我有一个按钮:
<Button Content="Save" Command="{Binding SaveCommand}"/>
现在在ViewModel上,我想在做其他事情之前验证文本输入:
SaveCommand = new RelayCommand(
param=>
{
//If validation is true
//Then Execute Res
}
);
答案 0 :(得分:1)
放弃用户界面验证规则,让您的虚拟机实施IDataErrorInfo和INotifyDataErrorInfo。
考虑一下 - 除非VM中的数据有效,否则不应执行save命令。这意味着验证逻辑应该在您的VM中,而不是在您的UI中。
实现这些接口使得在CanExecute发生更改时检查是否执行/可以执行并触发适当的事件是非常简单的。