我正在构建一个基于 MEF 的模块加载框架……基本布局是主 MEF 应用程序加载模块并将数据绑定到各种导出对象,包括模块的功能区和模块主视图(作为 UserControl)。
在模块中,功能区在一个 XAML 文件中定义为 ResourceDictionary,主视图(模块的窗口内容)在单独的 XAML 文件中定义为 UserControl。
MEF 框架应用程序的主窗口 XAML 绑定了模块的用户控件和功能区。通过功能区,它还将功能区的标记依赖属性链接到用户控件。这样,实际的模块功能区可以访问 UserControl(用于确定在网格中选择了哪些元素)。
这一切都很好......标签与用户控件正确关联。我遇到的问题出在模块的功能区中。我尝试绑定到 UserControl 中的子元素,但绑定失败。以下是模块的功能区绑定失败的示例:
<ribbon:RibbonButton
Command=”blah”
Label={“Binding RelativeSource={RelativeSource AncestorType=ribbon:Ribbon},
Path=Tag.Username.Text}”/>
正如我所提到的,标签已正确解析为模块的 UserControl ......但随后我在用户名上收到绑定错误(未找到属性)。
以下是我在 MEF 框架应用程序的主窗口中绑定 Tag 属性的方法:
<ribbon:Ribbon x:Name=”Ribbon”
DataContext=”blah”,
Tag=”{Binding ElementName=RibbonWindow,
Path=DataContext.ModuleList.CurrentItem.View}”>
顺便说一句,我无法使用 Prism 有点手足无措……