WinRT XAML Toolkit TextBoxValidationExtension не проверяется при инициализации привязки в ViewModel

Я использую TextBoxValidationExtension в шаблоне MVVM. У меня была проблема с проверкой, потому что я устанавливаю свой источник привязки в режиме TwoWay в методе NavigatedTo, который вызывается после вызова метода 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 ответ

Чтобы решить эту проблему, я добавил в WinRT 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();
        }

Если у кого-то есть лучшее решение, пожалуйста, дайте мне знать, спасибо!

Другие вопросы по тегам