WinRT XAML工具包TextBoxValidationExtension未在ViewModel中对initiale绑定进行验证

时间:2013-05-10 14:34:00

标签: validation mvvm binding windows-runtime winrt-xaml-toolkit

我在MVVM模式中使用TextBoxValidationExtension。我遇到了验证问题,因为我在NavigatedTo方法中以TwoWay模式设置我的绑定源,该方法在调用TextBoxFormatValidationHandler.Attach方法之后调用。因此,第一次验证在文本框上显示空值,该值将错误样式应用于文本框。

NavigatedTo中绑定到文本框的Text属性并未触发Textbox TextChanged事件,因为从我的理解,此时未加载Textbox控件。

所以即使很难,我有一个绑定到文本框的有效值,它似乎无效,因为扩展没有验证它。

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

1 个答案:

答案 0 :(得分:2)

我为解决这个问题所做的工作是在WinBT Toolkit 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();
        }

如果有人有更好的解决方案,请告诉我,谢谢!