将视图更改为孙子导致导入基数不匹配异常

时间:2016-08-16 15:45:10

标签: wpf mvvm mef

在问题标题中抛出的异常需要一些帮助。

首先,我知道造成问题的模块 - 不是为什么!

目前使用MVVM将应用程序重构为WPF(使用MEF作为DI) 我不会暗示知道任何这些(试图赶上技术曲线)

我想解决的问题 基于ViewModle Selected(父,子和孙子lvl视图模型)更改视图

应用程序的入口点(MainViewModel是应用程序lvl ViewModel)

 main.DataContext = ObjectBase.Container.GetExportedValue<MainViewModel>();

从MainViewModel中提取

 [Export]
    [PartCreationPolicy(CreationPolicy.NonShared)]
    public class MainViewModel : ViewModelBase
{
    //Exposed property for the view model exposed to the parent view
    //TODO: add a property for each view that will be exposed
    #region MEF Imports
    [Import]
    public TablesViewModel TablesViewModel { get; private set; }

    //[Import]
    //public EditTableViewModel EditTableViewModel { get; private set; }
    #endregion

    ViewModelBase _CurrentViewModel;
    //private ViewModelBase _SelectedViewModel;
    IServiceFactory _ServiceFactory;

    [ImportingConstructor]
    public MainViewModel(IServiceFactory serviceFactory)
    {
        _ServiceFactory = serviceFactory;
        LoadDashViewCommand = new DelegateCommand<object>(OnLoadDashViewCommand);
        LoadTablesViewCommand = new DelegateCommand<object>(OnLoadTablesViewCommand);
        LoadAdminViewCommand = new DelegateCommand<object>(OnLoadAdminViewCommand);
    }
    public ViewModelBase CurrentViewModel
    {
        get { return base.CurrentViewModel; }
        set
        {
            if (_CurrentViewModel != value)
                base.CurrentViewModel = value;
            OnPropertyChanged(() => CurrentViewModel, false);
        }
    }

导致异常的相关代码

        //[Import]
    //public EditTableViewModel EditTableViewModel { get; private set; }

我不确定我是否在正确的轨道上,但我想要的是以下内容。

MainViewmodel通过单击按钮调用TablesViewModel(按预期工作)。为了简洁起见,我省略了事件处理程序的实现

        private void OnLoadTablesViewCommand(object obj)
    {
        CurrentViewModel = new TablesViewModel(_ServiceFactory);
    }

然后根据TablesViewModel中选择的表格,调用EditTablesViewModel并更改主视图以反映该内容。

非常感谢任何帮助。 亲切的问候, 斯蒂芬

0 个答案:

没有答案