如何在按钮单击命令上使用验证规则

时间:2015-02-18 17:14:08

标签: c# wpf validation mvvm

我有一个带有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

                }

                );

1 个答案:

答案 0 :(得分:1)

放弃用户界面验证规则,让您的虚拟机实施IDataErrorInfoINotifyDataErrorInfo

考虑一下 - 除非VM中的数据有效,否则不应执行save命令。这意味着验证逻辑应该在您的VM中,而不是在您的UI中。

实现这些接口使得在CanExecute发生更改时检查是否执行/可以执行并触发适当的事件是非常简单的。