私たちはPrismベースのSilverlightアプリケーションを作成しています。私たちは、別々のモジュールにページをたくさん用意しています。2つ(またはそれ以上)のXAMLファイル間でVisualStateManagerを共有するにはどうすればよいですか?
ページ間の遷移は、ナビゲーションイベントを介して処理され、各モジュールは、ナビゲート時にページを表示してからナビゲートするとき、それを隠すために実装され、次のメソッドがあります。
public void Show()
{
VisualStateManager.GoToState(this, "ShowState", true);
}
public void Hide()
{
VisualStateManager.GoToState(this, "HideState", true);
}
瞬間に「ShowState」と"HideState"は各モジュールのXAMLファイルで定義されているので、何回も重複しています。 ...
各遷移のためStoryboard
を表す
<Grid x:Name="LayoutRoot">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="VisualStates">
<VisualState x:Name="ShowState">
...
</VisualState>
<VisualState x:Name="HideState">
...
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
。
私はちょうどStoryboard
の定義でエラーを発見しましたが、今はすべてのファイルにわたって修正を複製する必要があります。各ファイルで参照可能なStoryboard
の定義が1つだけだった方が良いでしょう。
私は徹底的に正しい構文を検索しましたが、運がまったくなかったのです。
このVisualStateManager
をすべてのXAMLファイルに共有するにはどうすればよいですか?
カスタムコントロール内で「動作」をカプセル化したいようです。そうすれば、必要に応じてコントロールを再利用するだけで、ストーリーボードをカプセル化し、発生した問題を修正するための単一の参照ポイントを提供します。私の推測では、これはExpanderなどに似たものです。そのコンテナ内のすべての子に共通の機能を提供します。 –