3

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

NavigatedTo 与文本框的 Text 属性的绑定没有触发 Textbox TextChanged 事件,因为根据我的理解,此时未加载 Textbox 控件。

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

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

1 回答 1

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();
        }

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

于 2013-05-10T14:34:00.110 回答