2

カスタム コントロールを作成しました。私は現在、いくつかのコントロール テンプレートを持っています。それらはすべて、表示/非表示などの多くのトリガーを複製しています。この機能の一部をコントロール自体に移動して、テンプレートを少し整理し、コントロール パーツを読んでいます。ビジュアル ステート マネージャー。

現在、コントロールはプロパティを公開していますIsExtraInfoShown。すべてのコントロール テンプレートには、このプロパティに独自のトリガーがあり、適切な領域を表示/非表示にします。

制御パーツについて読んだ後、これは完全に適合するようです。すべてのテンプレートには名前PART_ExtraInfoがあり、コントロールはこれを適切に表示/非表示にします。

しかし、その後、ビジュアル ステート マネージャーについて読みました。これは、ExtraInfoVisibilityグループを作成する必要があると推測してInfoShownいるInfoHiddenようで、テンプレートが定義できる状態と、Blend のようなエディターが操作できる状態を持っています。

どちらを使用する必要がありますか? それとも両方を使用することは可能ですか?PART_ExtraInfoつまり、そこにある場合は非表示/表示し、そうでない場合はGotoState()?

4

1 に答える 1

2

VisualStateManager を使用する場合、部品と状態のモデルにも従うことが想定されているようです。この場合、名前がすべてを物語っています。それだけでは不十分な場合は、VisualStateManger に関する Web 上のチュートリアルで定義されたパーツを状態と共に使用すると、状態を使用するときにパーツがまだ関連しているだけでなく、使用される要素を指定するため、さらに便利になることがわかります。状態を決定するためのコントロール。方法の詳細については、VisualStateManager を使用したパーツと状態モデル (パート 3/4)を参照してください。

トリガーやイベント ハンドラー内のコードなどの視覚的な状態を設定する従来の方法と、パーツと状態のモデルとの間の重複に関して、アドバイスは、状態を使用して、状態グループ内で定義された視覚的な概念を管理することのようです。それ以外の場合は、これらの値を操作するためにトリガーまたはコードの直接設定を使用しないでください。

VisualStateManager を WPF に統合する方法と、私たちが慣れ親しんだ既存の手法についての懸念事項をよく読みたい場合は、Carole Snyder によるポットThe VisualStateManager and Triggersを読むことをお勧めします。その記事には興味深い引用があり、私が抱えていた質問のいくつかを解決するのに役立ちました.

コントロールの作成者は、VisualStateManager を使用して表示状態を切り替える場合でも、表示状態のプロパティを引き続き定義する必要があります。

于 2013-02-17T23:26:05.027 に答える