2012-02-07 14 views
0

私はイベントを追加したテキストボックスを持っていますTextChangedしかし、それは私に最後の文字を無視してそのテキストボックスに入力したすべてのデータを与えませんが、私はテキストボックスに何を入力するか私はこれをして、私を助けてください。テキスト変更イベントを直ちに呼び出す方法は?

答えて

0

TextChangedイベントは、あなたのすべての文字を与える:

TextBox currentTextBox = sender as TextBox; 
string fullText = CurrentTextBox.Text; 

は、あなたのいない中PreviewKeyDownEventや他のプレビューイベントのようによろしいです。これらのすべてのイベントは最後の入力を無視します

+0

yup!はい、現在私はpreviewtextinputを使用しています。私はtextchangedに変更しました。現在はとてもうまいです。ありがとうございます@MyKuLLSKI :) – nag

-1

PreviewTextInputイベントを見てください。

また、mvvmパターンbindingとUpdateSourceTrigger = PropertyChangedを見てください。イベントはまったく必要ありません。あなたは拘束力を持ってあなたの情報を入手します。

+0

PreviewTextInput最後のキーを無視してください! – MyKuLLSKI

+0

知っておいて、私はちょうどmvvmとバインディングを使用するので、私はこれらのイベントが必要ない。 – blindmeis

+0

あなたはこれらのことを知る必要があることを知っています。 MVVMに留まるためには、実行時間が長くなる可能性があります。フォーカス問題があるときは次回に電話してください – MyKuLLSKI

0

拡張TextBoxクラスを作成し、KeyUpイベントを処理して、キーストロークごとにテキストプロパティバインディングを強制的に更新します。

public class MyWPFTextBox: TextBox 
{ 
    public MyWPFTextBox(): base() 
    { KeyUp += new KeyEventHandler(MyWPFTextBox_KeyUp); } 

    private void MyWPFTextBox_KeyUp(object sender, System.Windows.Input.KeyEventArgs e) 
    { 
     BindingExpression BE = GetBindingExpression(TextBox.TextProperty); 
     if (BE != null) 
      BE.UpdateSource(); 
    } 
} 
+0

ポイントがありません。テキスト変更されたイベントは既にそこにあります – MyKuLLSKI

+1

MVVMを適切に実行したい場合、つまりビューの中に最小限のコードしか置かない場合は、すべての点があります。 – Peregrine

関連する問題