繁体   English   中英

验证取消UpdateSourceTrigger时如何调用CanExecute

[英]How to call CanExecute when validation cancels UpdateSourceTrigger

我在视图中的TextBox上使用ValidationRule ,并且ValidationRule正常工作。

但是,当我处在Command的canExecute方法(在这种情况下为Button )的canExecute方法返回true(启用Button )的状态下,然后用户更改TextBox的内容,因此ValidationRule返回一个状态时,就会出现问题。错误的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>

经过更多研究后,解决方案似乎是在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属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM