验证取消UpdateSourceTrigger时如何调用CanExecute

How to call CanExecute when validation cancels UpdateSourceTrigger

我在视图中的 TextBox 上使用 ValidationRuleValidationRule 工作正常。

但是,当我处于 Command 的 canExecute 方法(在本例中为 Button )返回真值(启用 Button ),然后用户更改了 TextBox 的内容,因此 ValidationRule returns 变成了错误的 ValidationResult。这导致绑定到 Button.Text 的 ViewModel 属性 未更新,这意味着 canExecute 方法仍然认为结果良好并且 returns 为真。

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

编辑:这是我的 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>

经过更多研究,解决方案似乎是在我的 ViewModel 上实现 IDataErrorInfo 接口。然后我可以通过绑定 属性 完全访问 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 属性.