【问题标题】:MVVM WPF; Execute a command on window shownMVVM WPF;在显示的窗口上执行命令
【发布时间】:2015-02-18 13:08:02
【问题描述】:

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

我有一个包含工作区(tabcontrol 用户控件)区域的主窗口。通常工作区由主窗口视图模型中的命令实例化,该命令由主窗口上的按钮调用。我想要做的是调用一个称为 StartUpView 的工作区,以在启动时实例化(即显示主窗口时的 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 的新手。

【问题讨论】:

    标签: c# wpf mvvm


    【解决方案1】:

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

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

    将方法 ShowStartUpView 作为类成员和您的命令带到您的窗口。 现在在 Window 构造函数中调用 ShowStartUpView

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

    并像这样创建命令:

     new RelayCommand(ShowStartUpView);
    

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

    【讨论】:

    • 我是新手,不知道这意味着什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-11
    • 2014-11-16
    • 2020-11-24
    • 2012-10-13
    相关资源
    最近更新 更多