验证取消UpdateSourceTrigger时如何调用CanExecute

时间:2016-01-21 15:34:10

标签: c# wpf validation mvvm viewmodel

我在视图中的ValidationRule上使用了TextBoxValidationRule正常运行。

但是,当我处于Command的canExecute方法(在本例中为Button)返回true(Button已启用)时,会出现问题,然后用户更改TextBox的内容,以便ValidationRule返回false ValidationResult。这导致绑定到Button.Text的ViewModel属性未被更新,这意味着canExecute方法仍然认为结果良好并返回true。

那么 - 尽管存在错误的ValidationResult,我怎样才能让有问题的ViewModel属性更新?还是有另一种方法可以做到这一切吗?

编辑:这是我的TextBox的XAML:

<TextBox HorizontalAlignment="Left" Margin="67,50,0,0" VerticalAlignment="Top" Width="27">
    <TextBox.Text>
        <Binding Path="MachineNo" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged">
            <Binding.ValidationRules>
                <local:MachineNoValidate/>
            </Binding.ValidationRules>
        </Binding>
    </TextBox.Text>
</TextBox>

1 个答案:

答案 0 :(得分:0)

在做了一些更多研究之后,该解决方案似乎正在我的ViewModel上实现IDataErrorInfo接口。然后,我可以通过bound属性完全访问TextBox的当前内容。

这是新的XAML:

<TextBox HorizontalAlignment="Left" Margin="67,50,0,0" VerticalAlignment="Top" Width="27"
         Text="{Binding MachineNo, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, 
         ValidatesOnDataErrors=True}"/>

只需要实施this[]; WPF不使用Error属性。