我在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">
答案 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();
}
如果有人有更好的解决方案,请告诉我,谢谢!