wpf DelegateCommand和ValidationRules

时间:2017-08-17 12:48:25

标签: wpf validation mvvm

我有TimePicker和验证规则

<controls:TimePicker Grid.Row="0" Grid.Column="1" Culture="Ru-ru" Margin="5,5,5,2.5">
            <controls:TimePicker.SelectedTime>
                <Binding Path="EditTimeStart" Mode="TwoWay" NotifyOnValidationError="True" >
                    <Binding.ValidationRules>
                         ......
                    </Binding.ValidationRules>
                </Binding>
            </controls:TimePicker.SelectedTime>
        </controls:TimePicker>

和一个按钮(“保存”)。

<Button Content="Save" Command="{Binding Path=SaveCommand}"/>

在我的ViewModel

SaveCommand = new DelegateCommand(Save, CanSave);

其中CanSave方法处理另一个сonditions(条件与ValidationRules不相交)

问题。我可以使用SaveButton启用绑定验证和CanSave方法吗?

1 个答案:

答案 0 :(得分:2)

当您遵循MVVM模式并绑定到视图模型的命令属性时,通常应该在视图模型类中实现验证逻辑,而不是使用验证规则。

您可以通过实现IDataErrorInfo接口或.NET Framework 4.5中引入的更新且更灵活的INotifyDataErrorInfo接口来实现此目的。有关详细信息,请参阅以下博文:https://blog.magnusmontin.net/2013/08/26/data-validation-in-wpf/