我正在开发一个使用MEF导入插件DLL目录的插件系统。我们希望插件作者能够通过以XAML UserControl和自定义视图模型的形式公开自定义视图来定义配置屏幕。
此视图需要包含在具有其他功能的基本视图中。我的问题在于不知道插件将为其viewmodel使用什么类型的类。以下是我所拥有的基本概述:
基本配置屏幕用于保存插件的自定义视图:
<DockPanel LastChildFill="False">
<ContentPresenter x:Name="ConfigContent"
DataContext="{Binding ConfigureViewModel}"
Content="{Binding ConfigureView}"
DockPanel.Dock="Top"
Margin="10"/>
(.... other buttons and actions handled by base viewmodel ....)
基本视图模型使用插件接口构建,该接口通过属性公开插件的视图和视图模型。基本上这个:
interface IPlugin
{
FrameworkElement ConfigView {get;}
<don't know what to put here> ConfigViewModel {get;}
}
视图作为FrameworkElement公开,这似乎工作正常。问题是viewmodel,因为我不知道类型是什么。我天真地尝试过“对象”,但之后没有任何绑定工作,因为它们不是System.Object类的一部分。
有没有办法做到这一点,还是我接近这个错误?
编辑:
事实证明,问题似乎是插件的viewmodel上的按钮试图与基本视图模型绑定,而不是使用ContentPresenter的DataContext属性指定的按钮。我说错了吗?