MVVM WPF;在显示的窗口上执行命令

时间:2015-02-18 13:08:03

标签: c# wpf mvvm

我无法正确引用命令或类似的东西。

我有一个包含工作区(tabcontrol usercontrol)区域的主窗口。通常,工作空间由主窗口视图模型中的命令实例化,该命令由主窗口上的按钮调用。我想要做的是调用一个工作空间,称为StartUpView,在Start Up(IE显示主窗口时)实例化,并且不能通过任何其他方式访问。为此,我将在显示窗口后立即调用命令(showstartupview)。我试图通过将命令放在app.cs文件中的window.show之后,就像这样;

            window.Show();
        MessageBox.Show("THIS IS A TEST");
        new RelayCommand(param => this.ShowStartUpView());

我在showstartupview上得到“app.cs不包含定义”,这很明显,我知道我可以将其更改为MainWindowViewModel以解决此问题,但这意味着将MainWindowViewModel中的所有内容都设置为静态。哪个不好。还有什么其他选择吗?

道歉,如果这是一个不起眼的问题,我是C#和WPF以及MVVM的新手。

1 个答案:

答案 0 :(得分:1)

您应该将RelayCommand操作公开给显式方法。并在Window构造函数中调用该方法。 而不是做:

 new RelayCommand(param => this.ShowStartUpView());

将方法ShowStartUpView作为类成员和命令运行到Window。 现在在Window构造函数中调用ShowStartUpView

public class Window
{
  InitializeComponent();
  ShowStartUpView();
}

并创建如下命令:

 new RelayCommand(ShowStartUpView);

我不知道为什么你的命令在App而不是Window中,但你应该移动它。