3

MVVM パターンで TextBoxValidationExtension を使用しています。TextBoxFormatValidationHandler.Attach メソッドが呼び出された後に呼び出される NavigatedTo メソッドで、TwoWay モードでバインディング ソースを設定しているため、検証に問題がありました。したがって、最初の検証は、テキスト ボックスにエラー スタイルを適用していたテキスト ボックスの空の値で発生しました。

テキストボックスの Text プロパティへの NavigatedTo のバインディングは、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 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();
        }

誰かがより良い解決策を持っている場合は、私に知らせてください、ありがとう!

于 2013-05-10T14:34:00.110 に答える