如何设置未知类型的DataContext

时间:2014-05-23 10:51:09

标签: c# wpf mvvm

我正在开发一个使用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属性指定的按钮。我说错了吗?

0 个答案:

没有答案