14

つまり、基本的に、ユーザーが入力できる TextBox がたくさんあります。すべての TextBoxes にテキストが入力されるまで無効にしたいボタンがあります。以下は、私が使用している XAML TextBox のサンプルです。

<TextBox Name="DelayedRecallScore" TextInput="CheckTextBoxFilled" Width="24" />

そして、ここに私がトリガーしようとしている機能があります:

  //Disables the OK button until all score textboxes have content
    private void CheckTextBoxFilled(object sender, RoutedEventArgs e)
    {
        /*
        foreach (TextBox scorebox in TextBoxList)
        {
            if (string.IsNullOrEmpty(scorebox.Text))
            {
                Ok_Button.IsEnabled = false;
                return;
            }
        }
        Ok_Button.IsEnabled = true;
         */
        MessageBox.Show("THIS MAKES NO SENSE");
    }

TextInput がトリガーされる必要があるときに MessageBox が表示されません。実験として、PreviewTextInput で CheckTextBoxFilled() をトリガーしてみましたが、問題なく動作しました。つまり、何らかの理由で関数が呼び出されていないということです。また、PreviewTextInput によってトリガーされる検証関数もあり、正常に動作します。最初は、PreviewTextInput が何らかの形で TextInput に干渉しているのではないかと思ったので、PreviewTextInput を TextBox から外しましたが、何も修正されていません。なぜこれが起こるのか、私は完全に困惑しているので、助けていただければ幸いです。

4

4 に答える 4

16

TextInputがイベントを処理しているため、イベントのハンドラーは起動されませんTextBox代わりにTextChangedイベントを使用してみることができます。これは、文字がいつ追加または削除されたかを知りたいだけなので、TextBox.

于 2009-09-03T17:44:35.740 に答える
8
InitializeComponent();
textbox.AddHandler(TextBox.TextInputEvent, 
                   new TextCompositionEventHandler(TextBox_TextInput_1), 
                   true);
于 2012-04-05T07:54:26.907 に答える