2

WPF アプリケーションで検証を行いたい。そして、私が使用したいアプローチは、コントロールの値が変更された場合にカスタム アクションを実行することです。

私がこのようなコントロールを持っているとしたら、どうすればそれを行うことができますか

<TextBox x:Name="TextBox1" Text="{Binding Path=Box1,UpdateSourceTrigger=PropertyChanged}" />
<TextBox x:Name="TextBox2" Text="{Binding Path=Box2,UpdateSourceTrigger=PropertyChanged}" />

そして、ユーザーがそのコントロールの値を変更した場合、たとえばカスタムアクションを作成したい(私の考えでは)

private void Window_Controls_Property_Changed(object sender,RoutedEventArgs e){
  if(((Control)sender)=="TextBox1")
    MessageBox.Show("Show message here of validation some control","Attention",MessageBoxButton.OK);
}

私はまだメッセージボックスで必要なものを表示するエラーとINotifyPropertyChanged組み合わせて混乱しています。ValidationRule私はまだこの種の機能を使用する初心者です。

INotifyPropertyChangedorに関する多くの記事を読みValidationRuleましたが、前に述べたようにカスタム アクションを取得する方法がまだわかりません。また、カスタム検証では、別の textbpx 値を使用して、他のテキスト ボックスで検証する場合があります。

何か役に立ちますか? ...

4

4 に答える 4

0

mvvm での検証では、IDataErrorInfo を取得できます。ネット上に例があります。

ビューモデルのプロパティが変更されたときに特別なアクションを本当に実行したい場合は、独自のビューモデルの PropertyChanged イベントにサブスクライブして、自分のものを処理するだけです

于 2013-06-14T08:54:45.247 に答える
0

BindingGroups と検証に関するこのブロック投稿(およびこの関連ブログ投稿)を読むことをお勧めします。カスタム検証ルールを使用して複数のコントロールを一度に検証する方法を示しています。

于 2013-06-14T18:22:20.297 に答える
-1
<TextBox HorizontalAlignment="Left" LostFocus="OnLostFocus"/>

これが簡単な方法です。WPF で LostFocus イベントを使用して検証する

private void TextBox_LostFocus_1(object sender, RoutedEventArgs e) {
        var thisTextBox = (TextBox)sender;
        if (thisTextBox.Text == "") {
            MessageBox.Show("Validate!");
        }
    }
于 2013-06-14T08:31:00.670 に答える