更新WPF MVVM:ResourceDictionaryの構成に関する条約?
のStackOverflowのwikiの精神で、ここでの更新です:
私は以下のジョー・ホワイトのIValueConverter提案をスパイクしました。それは魅力のように働く。
これは、安価な文字列置換を使用してViewModels-> Viewsのマッピングを自動化する「クイックスタート」の例です。 ViewModelを表すViewが見つからない場合は、デフォルトで「構築中」ページになります。私はジョーホワイトのアイデアだったので、このアプローチ "WPF MVVM White"をダビングしています。ここにいくつかのスクリーンショットがあります。
最初のイメージは、という純粋な命名規則に基づいて、 "[SomeControlName] ViewModel"に対応する "[SomeControlName]ビュー"があります。 2番目は、ModelViewがそれを表すビューを持っていない場合です。長いViewModelからViewへのマッピングを持つResourceDictionariesはもうありません。これは純粋な命名規則です。私はWPF MVVMのジョシュ・スミスのfantastic MSDN article週末に読ん Mvvm.White.Quickstart.zip
オリジナルポスト
:
は、私はここでプロジェクトのダウンロードを掲載しました。それはカルトの古典になることを予定しています。レンダリングするためにWPFに尋ねる魔法のまわりで私の頭を包み込むのに、私はしばらくかかった。ViewModel。
「ここにはクラス、WPFがあります。どのUIを使用してプレゼンテーションを行うかを理解してください」この魔法を逃した人のために
、WPFはのResourceDictionaryマッピングでのModelViewためビューを検索し、対応するビューを引き出して、これを行うことができます。 (Figure 10 Supplying a Viewまでスクロールします)。すぐに私に飛び出し
最初の事はの強力な命名規則がすでにありますということです。
classNameView ("View" suffix)
classNameViewModel ("ViewModel" suffix)
私の質問は次のとおりです。
ResourceDictionaryをプログラム的に操作することができるので、私は「不思議メートル誰でもRegexを管理していれば、を置き換えて、検索は自動的にになり、新しいView/ViewModelは命名規則によって解決されますか?
[編集]私が想像しているのは、ResourceDictionaryへのフック/インターセプトです。
...どのようにちょうど右の生成について
//build list
foreach ....
String.Format("<DataTemplate DataType=\"{x:Type vm:{0} }\"><v:{1} /></DataTemplate>", ...)
そうそうそれを含むResourceDictionaryのxamlsファイルです
を使用して、直接のResourceDictionaryに私DataTemplatesを読み込むほとんどhthe同じことを行うことを決めました記事は素晴らしいです。私はRelayCommandをすべてのプロジェクトで使用しますが、ボタンテキストやツールチップのようなものを一度だけバインドするためのNameとDescriptionプロパティを追加しました。 – Botz3000
そこにMVVMフレームワークがあります(私は非常に多くのものを見て、これが何が呼び出されたかを忘れています)。私が想起しているように、自動的にビューをビューモデルに結びつけるための名前規約が使用されています。嫌いだった。黒い魔法のように見えました。あなたがコードを見ているとき、どのようにピースが結びついているかは決して分かりません。私は時々文脈で私のビュー・データ・テンプレートを定義して、ビュー/ビュー・モデルがどのように関連しているかを明確にするのが好きです。 –
[プロジェクトのリンク](http://rootsilver.com/files/Mvvm.White.Quickstart.zip)がダウンしています。他の場所に再アップロードできますか? –