2011-03-30 7 views
2

私のビュー私はボタンがあります。ボタンには、何らかのアクションを実行するリレーコマンドがあります。この操作の後、他のサイトに移動する必要があります。これどうやってするの。 viewModel内でこのサイトに移動するにはどうすればよいですか?私が何を意味しているかを理解していただければ幸いですあなたの助けのためのwpfページナビゲーション内のビュー

おかげ holzleube

+1

「他のサイトへのナビゲート」の部分をもう少し詳しく説明できますか?理解できません。あなたは組み込みのブラウザコントロールを使用していますか? – Marcote

+0

私はwpfサイトを使用しています。このサイトでは、私はいくつかのxamlコードを持っています。したがって、私は<ハイパーリンクNavigationUri = "mySite.xaml">でナビゲートすることができ、私のViewModelでしたいこのナビゲーション – holzleube

+0

あなたはまだその 'サイト'について明確にする必要があり、std名を使用する必要があります。 WPFにはサイトがありません。それは、ページ、Windowsとフレームを持っています。 –

答えて

1

は残念ながら、その質問への答えは、あなたが好きなように簡単ではないかもしれません。誰もがやり方が少し違っていると思うので、これは単なる1つの方法です。 最初に、私たちはプレースホルダコントロール(ItemsControl、sort of)という名前の "regions"という概念を持つMicrosoftのPrism/CALライブラリを使用します。次に、すべての "ページ"で、私たちがNavigationControllerと呼ぶコントローラのインスタンスを取ります。そのコントローラの役割は、ビューを入れ替えることです。 NavigationControllerには、依存関係インジェクションからホームViewModelを取得する(または、設定に応じて新しいインスタンスを作成する)、リージョンマネージャから取得して特定の領域をクリアした後、ロードするなどのGoToHomeのようなメソッドが満載ですそれは新しいホームビューモデルとそれ。次に、コールを「ページ」のバッキングビューモデルで呼び出して、コントローラを呼び出します。

したがって、要約すると、いくつかの配管が必要です。初期設定が完了したら、新しいページを追加するのに数分かかりますが、どこに行くのか、ロードする場所、バッキングを取得する方法を知る必要があるため、魔法の「リンク」はありませんビューモデル。

+0

私はコントローラとの方法は私の方法だと思う。私はいくつかの質問が残っています。フレーム付きウィンドウを使用します。フレームにはマイページが表示されます。サイトを移動するには、コントローラーにフレームオブジェクトを渡す必要があります。私はナビゲートできるよりも。これは正しいですか?フレームをどこにさらに付ける必要がありますか?コンストラクタまたはOnStartupイベントでは? – holzleube

+0

本当のMVVMのやり方でそれをするには、実際のUI要素から自分自身を遠ざけるために最善を尽くします。これは、地域が役立つものです。プレースホルダとして機能するグローバルに名前の付いたオブジェクトを提供します。次に、UI要素への参照を正確に渡すのではなく、アプリ内の位置とスタイルを変更できるプレースホルダーへの参照だけです。だからフレームからグリッドに変更しても、ロックされていません。しかし、CAL/Prismライブラリを取り込みたくない場合は、同様のことをすることをお勧めします。静的に参照されている名前付きUIコントロール。これにより、依存関係が制限されます。 –