0

MVVM モデルに従って、C# で WPF アプリケーションを作成しています。MenuView、ContentView1、ContentView2、などのいくつかのビューで構成される MainWindow があります。. . 等々。

MenuView、ContentView1、ContentView2 。. .、XAML ツリー内のすべてのいとこ(気にしない) です。

MenuView はいくつかのボタンで構成されています。各ボタンには一意の ID があります。コンテンツ ビュー (すべて) は、選択された (クリックされた) ボタンのメニュー ID を受け取る必要があります。つまり、MenuView のボタンがクリックされたときに、その ID を ContentsViews1、ContentsViews2 などに渡したいとします。

ビュー間でデータを渡す最善の方法がわかりません。

MenuView に存在するすべてのメニュー ボタンにイベント ハンドラーをアタッチすることを考えました。ハンドラーは MainWindow クラス (ルート ビュー) に実装されます。このハンドラーは、すべての子ビューに対して (トンネル オプションを使用して) RoutedEvent を発生させます。

それを行うより良い方法はありますか?パフォーマンスの問題を考えると最善の方法ですか?

4

2 に答える 2

0

MenuViewModel他の(関心のある)ViewModelがサブスクライブするイベントを公開するだけで済みます。次に、各ビューは対応するイベントにバインドし、必要な処理を実行できます。

これにより、関心のある各ViewModelがその存在を検出してMenuViewModel、そのイベントをサブスクライブできるようにする方法についての疑問が残りますが、アプリケーションと選択したMVVMフレームワークについての知識がなければ、実際に答えることはできません。

于 2012-04-25T16:09:00.150 に答える
0

このアプローチは、ある種のアクションストリングを渡すという私の長年のJavaエクスペリエンスを少し思い出させてくれます!?リスナーに。

すべてのボタンを1つのハンドラーにバインドしますか?また、IDに応じて、サブビュー内でアクションを実行しますか?

はいの場合は、すべてのボタンを独自のICommandにバインドし、ハンドラーデリゲート内でアクションを実行する必要があります。

于 2012-04-25T15:44:28.180 に答える