そして、ガイダンスに事前に感謝します。私はMVVMには新しく、記事を通して学習してきました。私はかなり遠くに行ったと思うが、私を逃れるようなものが1つある。どのように(コードのコードを使用しないで)自動的に私が望むビューにバインドするのですか?私が理解しているように、正しく行われれば、これはパターンがどのように機能すべきかです。私はこれをすべてメインウィンドウxamlのコードの背後にあるコードを使って行うことができます。また、リソース辞書を正しく作成しました(私は直接ウィンドウでアクセスできます)。私は、自動化の次のステップには到達できません。 '私はこのパターンに慣れていないので、私はこれがすべて間違っている可能性を完全に受け入れています。ここに私が持っているものは...MVVM - ビューモデルをビューにバインドするには
私はメインウィンドウを持っています。 3行のグリッドです。一番上の行はメニューです。一番下の行はステータスバーです。中央は、メニュー選択に基づいて内容が動的にロードされるスタックパネルです。
私は、このスタックパネルを埋めるために私が使用している2つのビューがあります。その中にはスタイル付きのテキストボックス以上のものはありません(ヘルプ&について)。もう1つはコンポジットビューです。検索パネル、結果グリッド、詳細パネルはすべてドックマネージャフレームにロードされます。
メインウィンドウのコードでは、ユーザーがメニューオプションをクリックすると、スタックパネルの子をクリアし、ビューモデルをインスタンス化し、ビューモデルを渡してビューをインスタンス化してから、スタックの子供たち。これは正常に動作しますが、パターンと一貫しているとは思いません。
私はリソースディクショナリを持っていますが、スタックパネルと関連付ける方法はわかりません。バインディングを使用する必要があると仮定しますが、リソースディクショナリにバインドする方法や、コマンドでビューを変更するように指示する方法はわかりません。
利用可能なすべてのビューモデルを読み込み専用リストに読み込んだビューモデルは、基本的にメインウィジェットと必要な実際のビューモデルの間で機能します。これは問題ないと思われますが、なぜリソース辞書が必要なのか分かりません。さらに、これらの例はウィザードの実装であり、このシナリオでは良いアプローチのように思えますが、100個のビューモデルを持つアプリケーションではこれを行うことはできません。
もう一度、私の無知には申し訳ありませんが、私は誰かが正しい方向に私を向けることを望んでいました。私が言ったように、私は数多くの記事(ジョシュ・スミス、デイヴ・ヒルなど)を読みましたが、まだ接続していないので、具体的なガイダンスを期待していました。 (私は途中でWPF Unleashedを持っていますが、その前にいくつかの進歩を遂げたいと思っていました)
誰でも助けてもらえますか?
これに完全に回答する時間はありませんが、これが始まることがあります。リソースディクショナリでは、ViewModelタイプのデフォルトビューを設定できます。次に、ViewModelのインスタンスをItemPresenterの何らかの種類のコンテンツにドロップすると、そのデフォルトのインスタンスが使用され、ViewModelの正しいビューが魔方陣で表示されます。次に、リージョンを持つウィンドウを作成するか、リージョンマネージャを使用してリージョンを塗りつぶすだけです。ここをクリックしてくださいhttp://stackoverflow.com/questions/5767759/changing-between-views-using-mvvm-light/5769233#5769233 –
私は理解していると思いますが、確かに確かめることができますか?リソースディクショナリは、特定のビューとビューモデルを関連付けるための簡単な方法です。しかしそれにもかかわらず、どのような方法でもこれを行うことを選択した場合、「このイベントが発生すると、既存のコンテンツをクリアしてこの新しいコンテンツを追加する」というコードが必要です。それですか?あなたのリージョンマネージャなど、コンテンツの切り替えを処理するためのより良い方法があるようです。私が混乱していたのは、「...コードがない...」と読むときだったと思いました。これは、コンテンツ切り替えコードが存在しないことを意味していたと思いました。 – panania