Передача значения из окна в список в другом окне — C # WPF

#c# #wpf

#c# #wpf

Вопрос:

Значение передается и добавляется, но когда я захожу в это окно, оно не добавляется в список. Значение добавляется в коллекцию, но не в поле списка. Я обнаружил, что если я попытаюсь добавить другое значение, оно перезапишет исходное (счетчик всегда равен 1, изображение получено при третьей передаче строки). При объяснении можете ли вы объяснить это легко, потому что я только новичок. Все, что я хочу выяснить в первую очередь, это вывести его на печать в поле списка.

Окно 1

     ObservableCollection<string> Modules = new ObservableCollection<string>();

    public void PassedThroughWindow(string _module)
    {
        string moduleName = _module;

        //Data not being printed to the listbox
        Modules.Add(moduleName.ToString());
        lbxTimeTable.ItemsSource = StringModules;
    }
  

Окно 2

         string ModuleName = TbxModuleName.Text;

        //Passing Data To Main Window
        MainWindow main = new MainWindow();
        main.PassedThroughWindow(ModuleName);  
  

Отладка из первого окна:
Отладка из первого окна

Комментарии:

1. Я анализировал строку для другого экземпляра формы. Спасибо за помощь, ребята 🙂

2. Оба окна должны использовать экземпляр common view model (в их свойстве DataContext). Найдите MVVM в Интернете.

Ответ №1:

Вы передаете значение в новый экземпляр вашего mainwindow, а не в существующий

 MainWindow main = new MainWindow();
main.PassedThroughWindow(ModuleName);  
  

Вот почему оно не отображается в вашем существующем MainWindow

Ответ №2:

 ObservableCollection<string> Modules = new ObservableCollection<string>();

public MainWindow()
{ 
      //Assign item source only once and try adding items it should help
      lbxTimeTable.ItemsSource = Modules;
}  

public void PassedThroughWindow(string _module)
{
    string moduleName = _module;

    //Data not being printed to the listbox
    //Change stringModules to Modules which is defined above
    Modules.Add(moduleName.ToString());

}
  

Также еще один момент, где определены StringModules?. Определите только один экземпляр mainwindow и передайте данные.

Комментарии:

1. Модуль String — это то, как он назывался изначально. Я изменил на модули