PRISM アーキテクチャに WPF アプリケーションがあります。
内部に 2 つのユーザー コントロールを持つユーザー コントロール (ビュー) があります。
「検索ユーザー コントロール」が独自のユーザー コントロールにある理由は、アプリケーションで再利用する予定があるためです。
メインのユーザー コントロール (黒) は「MainView」と呼ばれ、2 つのユーザー コントロールがあります。結果を表示するグリッド
これらのユーザー コントロール (および親の「メイン ビュー」) はそれぞれ「ビュー」であり、「ビュー モデル」があります。
「子」ユーザーコントロールが独自の「ビューモデル」を自動的に作成しないという事実を除いて、すべてが正常に表示されます。
ビューモデルのクラスには「エクスポート」属性があり、ビューの分離コードには次のスニペットがあります。
[Import]
FilterFieldsViewModel ViewModel
{
set
{
this.DataContext = value;
}
}
「View-Model」の設定は「 Main View」では行われますが、子ビューでは行われません...
「検索ユーザー コントロール」の「検索」ボタンにコマンドをバインドしました。アプリケーションが読み込まれると、出力ウィンドウに次のようなエラーが表示されます。
BindingExpression パス エラー: 'SearchCommand' プロパティが 'object' ''MainWindowViewModel' (HashCode=22047425)' に見つかりません。BindingExpression:Path=SearchCommand; DataItem='MainWindowViewModel' (HashCode=22047425); ターゲット要素は「ボタン」(名前=「検索」); ターゲット プロパティは 'Command' (タイプ 'ICommand') です。
何らかの理由で、子ユーザー コントロールのビュー モデルがインスタンス化されていないため、「子」ユーザー コントロールからのコマンドがメイン ウィンドウのビュー モデルのビュー モデルにバインドしようとします。
どうしてこれなの ?