私は MEF ベースのモジュール読み込みフレームワークを構築しています... 基本的なレイアウトは、メインの MEF アプリケーションがモジュールを読み込み、データがモジュールのリボンやモジュールのメイン ビュー (UserControl として) を含むさまざまなエクスポートされたオブジェクトにバインドされることです。
モジュールでは、リボンは 1 つの XAML ファイルで ResourceDictionary として定義され、メイン ビュー (モジュールのウィンドウ コンテンツ) は別の XAML ファイルで UserControl として定義されます。
MEF フレームワーク アプリのメイン ウィンドウ XAML は、モジュールのユーザー コントロールとリボンをバインドします。また、リボンを使用して、リボンの Tag 依存関係プロパティを UserControl にリンクします。このようにして、実際のモジュール リボンは UserControl にアクセスできます (グリッドで選択されている要素を決定するなどの目的で)。
これはすべて正常に機能します... タグは UserControl に適切に関連付けられています。私が遭遇した問題は、モジュールのリボンにあります。UserControl のサブ要素にバインドしようとすると、バインドが失敗します。失敗しているモジュールのリボン バインドの例を次に示します。
<ribbon:RibbonButton
Command=”blah”
Label={“Binding RelativeSource={RelativeSource AncestorType=ribbon:Ribbon},
Path=Tag.Username.Text}”/>
前述したように、Tag はモジュールの UserControl に適切に解決されますが、Username でバインド エラーが発生します (プロパティが見つかりません)。
MEF フレームワーク アプリのメイン ウィンドウで Tag プロパティをバインドする方法は次のとおりです。
<ribbon:Ribbon x:Name=”Ribbon”
DataContext=”blah”,
Tag=”{Binding ElementName=RibbonWindow,
Path=DataContext.ModuleList.CurrentItem.View}”>
ところで、私はプリズムを使用できないという事実に少し身動きが取れません…