代码之家  ›  专栏  ›  技术社区  ›  Brie

如何在验证取消UpdateSourceTrigger时调用CanExecute

  •  1
  • Brie  · 技术社区  · 10 年前

    我正在使用 ValidationRule TextBox 在我看来 验证规则 工作正常。

    但是,当我处于canExecute方法用于 Command (在 Button 在本例中)返回true( 按钮 启用),然后用户更改 文本框 所以 验证规则 返回false ValidationResult 。这将导致ViewModel属性绑定到 Button.Text 未更新,这意味着canExecute方法仍然认为结果良好并返回true。

    那么,尽管存在false,我如何才能更新有问题的ViewModel属性 验证结果 ? 还是有其他方法可以做到这一切?

    编辑:这是我的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 回复  |  直到 10 年前
        1
  •  0
  •   Brie    10 年前

    在做了更多的研究之后,解决方案似乎是实现 IDataErrorInfo 我的ViewModel上的界面。然后,我可以完全访问 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 所有物