2016-01-21 36 views
0

我在我的View中使用TextBoxValidationRule,並且ValidationRule工作正常。如何在驗證取消時調用CanExecute UpdateSourceTrigger

然而,當我在那裏(在這種情況下,在Button)的canExecute方法爲Command返回真(Button啓用)的狀態,然後在用戶更改TextBox這樣的內容出現問題ValidationRule返回一個錯誤ValidationResult。這導致綁定到Button.Text的ViewModel屬性不會被更新,這意味着canExecute方法仍然認爲結果是好的並返回true。

所以 - 我怎麼能得到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> 

回答

0

做一些調查研究後,該解決方案似乎是實現我的視圖模型的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屬性。

相關問題