我无法正确引用命令或类似的东西。
我有一个包含工作区(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的新手。
答案 0 :(得分:1)
您应该将RelayCommand操作公开给显式方法。并在Window构造函数中调用该方法。 而不是做:
new RelayCommand(param => this.ShowStartUpView());
将方法ShowStartUpView作为类成员和命令运行到Window。 现在在Window构造函数中调用ShowStartUpView
public class Window
{
InitializeComponent();
ShowStartUpView();
}
并创建如下命令:
new RelayCommand(ShowStartUpView);
我不知道为什么你的命令在App而不是Window中,但你应该移动它。