2009-07-24 4 views
17

PasswordBoxのリターンキーをキャッチする最も良い方法は何ですか? (WPF/XAML)パスワードボックス内のリターンキーをキャッチする最良の方法は何ですか? (WPF/XAML)

ユーザー名とパスワードの入力用に、ログインフォームにTextBoxフィールドとPasswordBoxフィールドがあります。私はまた、ログインの検証プロセスを実行するメソッドを呼び出すログインボタンを持っています。

私は、ユーザーがオプションは、ユーザー名とパスワードを入力しており、単純にログインするためにリターンを打つことができるように、PasswordBoxに同じように反応してReturnキーを作成する必要があります。

誰もこれがどのように知っていますWPFでできましたか?どんな助けもありがとうございます。

答えて

47

を。 WPF Buttonクラスは、IsDefaultというプロパティを提供します。 trueに設定すると、ウィンドウ内の一部のオブジェクトにフォーカスがあるときにreturnキーを押すと、ボタンのclickイベントのコードが自動的に起動されます。このメカニズムは、パスワードボックスの魅力のように機能します。

+0

さらに良い!ありがとう! – Giffyguy

+0

ありがとうございましたまさに私が必要なもの! – rikket

+4

IsDefault、IsDefaulted、およびIsCancelの各プロパティは、WinRTのボタンクラスには実装されていません。失望している。 –

1

RoutedCommandを試すことができます。

ButtonのCommandプロパティで設定できます。
ログインフォームのInputBindingsにKeyGestureを追加して、EnterキーをバインドしてRoutedCommandを起動することもできます。

次に、ログインフォームのCommandBindingsにCommandBindingを追加して、コード内のRoutedCommandとExecutedハンドラをバインドし、ログインの検証プロセスを実行またはトリガーします。

+0

強力なサウンドです!しかし、実際これを行う最も簡単な方法は今ですか?もしそうなら、私はマイクロソフトのために耳を澄ますでしょう、ちょっと教えてください。 – Giffyguy

+0

この方法では、2つではなくコード内に1つのハンドラしかありません(ボタンの場合、パスワードボックスの場合)。柔軟性があり、それほど複雑ではありません。 RoutedCommandを定義してCommandBindingを追加するという、2回の追加ステップがあります。 KeyGestureは、クリックハンドラではなくコマンドを設定するボタンのために、パスワードボックスにイベントハンドラを追加するのと同じです。 しかし、あなたはポイントがあります。単純なログインフォームにはおそらく残念です。 :) – Bubblewrap

4

あなたは(必要な場合やテキストボックス)PasswordBoxにKeyDownイベントを処理し、次のイベントハンドラを使用することができます - ボタンのコードを有効にするにはさらに簡単メカニズムがあり

private void OnKeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.Key != Key.Return && e.Key != Key.Enter) 
     return; 
    e.Handled = true; 
    HandleEnter(); 
} 
+0

これは完全に動作します、私はちょうど別のWPFコントロールのために使用可能なイベントを見つけるのに困っています...ありがとう! – Giffyguy

関連する問題