0

WPF にテキスト ボックスがあり、コマンドをその LostFocus イベントにバインドし、そのコマンドでいくつかの検証を行います。

同じウィンドウに、キーバインディングが Ctrl + S の [保存] ボタンがあります。

テキストボックスにいくつかの変更を加えてから Ctrl + S を押すと、テキストボックスで Lost focus イベントを発生させずに保存コマンドを実行します。

私はこれが設計によるものであることを知っています。

しかし、保存コマンドの前にそのコードを実行したいのですが、保存プロセスでそのコードをハードコードすることはできません。フォーカスがテキストボックスにある場合にのみ実行したいのです。

4

1 に答える 1

0

検証コードを、LostFocus と Save コマンドの両方で呼び出すことができる別のメソッドに分割する必要があります。Save から LostFocus を呼び出すことは、このロジックを実装する方法としては不適切です。

新しいメソッドは、検証が成功したかどうかを示すブール値を返すことができます。LostFocus コマンドのバインドに依存しない検証を行うためのより良い方法があります。他のアイデアについては、私のブログ記事「データ バインディング、検証、および MVVM を次のレベルに引き上げる - パート 1」を参照してください。

于 2012-12-26T06:43:49.993 に答える