在Command中初始化全局变量并在另一个Command中使用它

时间:2016-10-21 18:55:54

标签: c# wpf mvvm command viewmodel

我的ViewModel包含一个在Command中初始化的变量,我想在另一个命令中使用它。 有2个Windows: 第一个窗口包含一个按钮,用于启动第一个命令并打开第二个窗口。第二个窗口包含一个启动第二个命令的按钮。第二个命令需要第一个命令初始化的变量。 这两个命令都是通过我的ViewModel实现的。

问题: 当第二个窗口打开时,第一个Command初始化的变量已经丢失了它的值(空字符串),我不明白为什么。

我怎么能意识到它?

1 个答案:

答案 0 :(得分:0)

这是我的代码(来自我的ViewModel类):

// TextForThisWindow is a global variable declared in this class.

...

void firstCommandExecute()
    {
        TextForThisWindow = "Text";
        System.Windows.Application.Current.MainWindow.Hide();
        secondWindow sw = new secondWindow(Text);
        sw .WindowStartupLocation = WindowStartupLocation.CenterScreen;
        sw .Show();
    }

    bool CanfirstCommandExecute()
    {
        return true;
    }


    public ICommand firstCommand{ get { return new RelayCommand(firstCommandExecute, CanfirstCommandExecute); } }


    void secondCommandExecute()
    {
        Info = "info";

        if (TextForThisWindow.Contains("X"))
        {
            Selected = "X";
        }

        PathOfSelectedInfo = img.getPathOfSelectedInfo(ImagePathM1, Info);
        path = PathOfSelectedInfo;
        thirdWindow tw= new thirdWindow("Text" + Selected);
       tw.WindowStartupLocation = WindowStartupLocation.CenterScreen;
       tw.Show();
    }

    CanthirdWindowExecute()
    {
        return true;
    }


    public ICommand secondCommand{ get { return new RelayCommand(secondCommandExecute, CansecondCommandbExecute); } }