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();
}
Если у кого-то есть лучшее решение, пожалуйста, дайте мне знать, спасибо!