2013-05-10 24 views
3

我在MVVM模式中使用TextBoxValidationExtension。我在驗證時遇到了問題,因爲我在調用TextBoxFormatValidationHandler.Attach方法之後調用的NavigatedTo方法中將綁定源設置爲TwoWay模式。因此,第一次驗證發生在文本框上的空值上,該文本框將錯誤樣式應用於文本框。WinRT XAML Toolkit TextBoxValidationExtension不驗證ViewModel中的初始綁定

NavigatedTo到文本框的Text屬性中的綁定沒有觸發Textbox TextChanged事件,因爲從我的理解來看,此時文本框控件尚未加載。

因此,即使強硬我有一個綁定到文本框的有效值,它看起來是無效的,因爲擴展沒有驗證它。

 <TextBox Text="{Binding Path=ObjectXYZ.PropertyABC, Mode=TwoWay}" 
       extensions:TextBoxFocusExtensions.AutoSelectOnFocus="True" 
       extensions:FieldValidationExtensions.Format="NonEmpty,Numeric"> 

回答

2

我做了什麼來解決這個問題是一個處理程序添加到WinRT的工具包TextBoxFormatValidationHandler到文本框在TextBoxFormatValidationHandler.Attach方法加載的事件:

internal void Attach(TextBox textBox) 
     { 
      if (_textBox == textBox) 
      { 
       return; 
      } 

      if (_textBox != null) 
      { 
       this.Detach(); 
      } 

      _textBox = textBox; 
      _textBox.TextChanged += OnTextBoxTextChanged; 
      _textBox.Loaded += _textBox_Loaded; 
      this. Validate(); 
     } 

     void _textBox_Loaded(object sender, Windows.UI.Xaml.RoutedEventArgs e) 
     { 
      this.Validate(); 
     } 

如果有人有請給我一個更好的解決方案,謝謝!

+0

有趣的是,當文本值在加載控件之前被更改時,似乎TextChanged事件不會引發。我不知道它是否是平臺中的錯誤。謝謝。我將把你的建議修復應用到工具箱中。 – 2013-05-11 06:15:06

+1

確保獲得最新版本。 – 2013-05-11 06:20:35

+0

非常感謝Filip! – 2013-05-14 18:36:58

相關問題