1

同じWPFフォームの3つのテキストボックスにテキスト(ユーザー、パスワード、サーバー)が入力されるまで無効にしたい「ログイン」ボタンがあります。

3 つのコントロールすべてにデータがある場合にのみ True を返す IsLoginEnabled というブール値プロパティを持つバッキング オブジェクトがあります。ただし、いつこのプロパティをチェックする必要がありますか? 3 つの依存コントロールのそれぞれの LostFocus イベントにあるべきですか?

ありがとう!

vg1890

4

4 に答える 4

1

IsLoginEnabled3 つのフィールドのいずれかが更新されたときに、変更されたイベントを発生させる「バッキング オブジェクト」を取得します。次に、ボタンを IsLoginEnabled プロパティにバインドすると、チェックし続ける必要がなくなります。

擬似コードは次のようになります。

Public Event IsLoginEnabledChanged As EventHandler

Public Property User() As String
Get..   ' snipped for brevity
Set(ByVal value As String)
   mUser = value
   RaiseEvent IsLoginEnabledChanged(Me, New EventArgs())
End Set

' do the same in the Set for Password() and Server() properties

これの秘訣は、イベントに名前を付けることです[PropertyName]Changed(つまりIsLogonEnabledChanged)-このイベントを発生させると、バインドされたコントロールに自動的に通知されるためです:o)

于 2008-10-24T16:02:06.323 に答える
0

はい、最も簡単なオプションは、これらの各コントロールの LostFocus または TextChanged イベントで確認することです。ただし、もう少し重い処理を行う場合は、ボタンの有効化にバインドできる依存関係プロパティとしてブール値を実装できます。 http://msdn.microsoft.com/en-us/library/ms750428.aspx

于 2008-10-24T15:54:10.673 に答える
0

WPF の最も便利な機能の 1 つであるRoutedCommandsを使用できると思います。基本的にCommandBindingを追加し、 OnExecuteOnQueryCommandEnabledを使用してボタンの有効状態を管理します。

WPF での RoutedCommands の使用に関するこの素晴らしい説明を確認してください

于 2008-10-24T19:46:20.067 に答える
0

IsLoginEnabled をログイン ボタンの Enabled プロパティに直接データバインドできますか?

于 2008-10-24T15:58:20.277 に答える