ViewModelにLostFocusというプロパティがあり、これがいつ変更されるかをビューに知らせて、必要に応じてこの情報に基づいて動作できるようにします(つまり、LostFocusがtrueに設定されている場合、ビューの設計者がビューをぼかしてしまう可能性があります。または多分彼らは何もしません)。
私はCaliburn.Microを使用しているので、ここで知っておくべき機能がある場合は教えてください。それ以外の場合は、MVVM方式でこれをどのように実行しますか?
ViewModelにLostFocusというプロパティがあり、これがいつ変更されるかをビューに知らせて、必要に応じてこの情報に基づいて動作できるようにします(つまり、LostFocusがtrueに設定されている場合、ビューの設計者がビューをぼかしてしまう可能性があります。または多分彼らは何もしません)。
私はCaliburn.Microを使用しているので、ここで知っておくべき機能がある場合は教えてください。それ以外の場合は、MVVM方式でこれをどのように実行しますか?
私が理解しているように、これは通常のデータバインディングで実現できます。Caliburn.Microを使用しているため、設計者は規則を使用してバインディングを実行できます。たとえば、LostFocusがtrueに設定されているときにチェックされるビューにチェックボックスコントロールがある場合、設計者はチェックボックスのNameプロパティがLostFocusに設定されていることを確認するだけで、Caliburnが設定されます。自動的にバインドします。
また、ビューモデルで、LostFocusの値を変更するときに、プロパティ変更通知イベントを発生させるようにしてください。
LostFocusプロパティを使用する代わりに、ビューモデルにLostFocusイベントを作成することもできます。次に、適切と思われるときにこのイベントを発生させることができます。その後、ビュー上で、デザイナーはイベントトリガーとトリガーアクションを使用してそれに応答できます。たとえば、私のプロジェクトの1つで、ビューモデルのActivatedイベントに応答するイベントトリガーを設定してから、ビューのイントロアニメーションの実行を担当するストーリーボードを再生するカスタムトリガーアクションを作成しました。このアプローチはCaliburn.Microに限定されていませんが、Caliburn.Microプロジェクトで使用したので、間違いなく機能します。
最終的にBindingConverterについて学習し、それを使用してfalseのブールプロパティをnullに変換し、trueをBlurEffectに変換しました。