私は最近、Expression Blend を使用しましたが、Visual State Manager と呼ばれるものがあることがわかりました。それと通常のイベント ドリブン モデルの違いは何ですか?また、どちらが優れているのでしょうか?
3 に答える
イベントは、「物事」が起こっている例です。
- クリックされましたか?
- タイマーが作動しましたか?
- データの準備はできていますか?
Visual State Manager は、コントロールの複数の同時状態を管理するために使用されます。
- 私は押されていますか?
- マウスは私の上にありますか?
- 私はチェックされていますか?
イベントはリッスンしているオブジェクトへの単なるコールバックですが、状態は視覚的な状態であるため、基本的にまったく異なる目的で使用されます。イベントは状態の変更をトリガーできますが、それが唯一の重複です。
Visual State manager は、(驚くべきことに)状態の管理に使用されます。たとえば、ボタンを複数の状態にすることができます。
- マウスオーバー
- マウスダウン
- 無効
- 有効
コードで実際にそれを知る必要はないため、アプリケーションのすべての視覚的状態を XAML 内に保持する必要があります。
また、Visual State Manager は、エラーが発生しやすいコード ビハインドを減らすのに役立ちます。
また、イベントに関しては、実際、私はコマンドをより頻繁に使用する傾向があり、イベント自体よりもコマンドの方が便利であることがわかりました。
オブジェクトはイベントを発生させて、何かが発生したことを示します。イベントは、任意のペイロード (イベント引数) と (慣例により) イベントを送信したオブジェクトを運びます。表示状態は、コントロールまたはユーザー コントロールのさまざまな状態を定義します。視覚的な状態は、コントロールの外観、その外観への遷移方法、およびその外観からの遷移方法を定義します。(「トランジション」には、可視性の切り替えから複雑なアニメーションまで、あらゆるものが含まれます。) 視覚的な状態はコントロールの一部ですが、イベントのように直接サブスクライブすることはできません。
1 つのモデルが他のモデルよりも優れているわけではありません。単に異なるだけです。ビュー モデルとモデル/サービス レイヤーでイベントを使用し、ビュー レイヤーで視覚的な状態を使用することを考えてください。