在菜单命令操作上显示UserControls

时间:2017-03-01 01:17:12

标签: c# mvvm-light

我想在主窗口中显示Windows / UserControl 当我单击一个菜单项时,我想在不同的窗口中显示它们。

我在WPF中使用MVVM light和postharp。

当我单击一个菜单项时,该命令进入relaycommand方法(GetCustomerView)并创建一个新的Object,但不显示Window。但是当我在构造函数中创建它时,Window显示没有任何问题 我怎么搞砸了?
怎么做才能修好呢? 我是MVVM的新手。提前谢谢。

[NotifyPropertyChanged]
public class MainViewModel : ViewModelBase
{
    public MainViewModel()
    {
        CustomerCommand = new RelayCommand(GetCustomerView);
        //CurrentView = new CreateCustomerViewModel();
    }

    public ViewModelBase CurrentView { get; private set; }
    public RelayCommand CustomerCommand { get; set; }

    private void GetCustomerView()
    {
        CurrentView = new CreateCustomerViewModel();
    }
}   // probably the ending '}' of the class --- added by editor!

编辑:从头开始看起来像是这样但我输错了代码。 如果我取消注释代码// CurrentView,它将显示“应用程序启动时的视图”,而不是“菜单项”命令“执行”

1 个答案:

答案 0 :(得分:0)

只要查看您提供的代码,就没有实现构造函数,尽管默认情况下每个类都被赋予一个null构造函数。定义CustomerCommand后,您的班级定义结束。我想你想在CustomerCommand之后删除大括号。另外,我认为你的意图如下:

[NotifyPropertyChanged]
public class MainViewModel : ViewModelBase
{
    public MainViewModel()
    {
        CustomerCommand = new RelayCommand(GetCustomerView);
        //CurrentView = new CreateCustomerViewModel();
    }

    public ViewModelBase CurrentView { get; private set; }
    public RelayCommand CustomerCommand { get; set; }

    private void GetCustomerView()
    {
        CurrentView = new CreateCustomerViewModel();
    }
}   // probably the ending '}' of the class --- added by editor!