2016-10-21 2 views
0

My ViewModel содержит переменную, инициализированную в Command, и я хочу использовать ее в другой команде. Есть 2 окна: Первое окно содержит кнопку, которая запускает первую команду и открывает второе окно. Второе окно содержит кнопку, запускающую вторую команду. Эта вторая команда нуждается в переменной, инициализированной первой командой. Обе команды реализованы в моей модели ViewModel.Инициализировать глобальную переменную в Команде и использовать ее в другой команде

Проблема: Когда открывается второе окно, переменная, которая была инициализирована первой командой, потеряла свое значение (пустая строка), и я не понимаю, почему.

Как я могу это понять?

+0

Что вы имеете в виду под "Command"? – byxor

+0

C# не имеет глобальных переменных. Однако вы можете использовать свойство члена класса или свойство 'static'. Не могу сказать, что было бы лучше, не зная какой-либо базовой информации о вашем коде. Являются ли команды в разных классах? –

+2

"переменная, которая была инициализирована первой командой, потеряла свое значение (пустая строка), и я не понимаю, почему." - ahhh, поэтому вы просите нас рассказать вам, что делает ваш код. Не увидев его. Позвольте мне посмотреть, есть ли у nuget карты Tarot Card и Mind Reading ... –

ответ

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); } } 
Смежные вопросы