在问题标题中抛出的异常需要一些帮助。
首先,我知道造成问题的模块 - 不是为什么!
目前使用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并更改主视图以反映该内容。
非常感谢任何帮助。 亲切的问候, 斯蒂芬