Я разрабатываю приложение в WPF. Мне нужно загрузить экземпляр класса Window (который я называю Win1 здесь), которым заполнена форма. Затем, когда нажата кнопка «Отправить», Win1 закрывается, и только тогда может быть загружено новое окно Win2 (другой класс, также унаследованный от Window). Проблема в том, что они оба открываются, и я не могу синхронизировать данные, полученные с первого Win1 , и передать их на второй Win2 . Я просто облажался.
Кто-то может дать мне общую идею с указанием инструментов и схемы, которые мне нужны для выполнения вышеизложенного. Для данных спецификаций необходимо, чтобы Win2 появился только после того, как Win1 завершил свою работу.
Несмотря на то, что приложение является более сложным, чем я описал его сейчас, я хотел бы опубликовать некоторый код, но мне удается запутать представления о том, кто меня читает, поэтому я говорю вам, что в данный момент я управляю окна внутри конструктора App.cs, в то время как MainWindow.cs соответствует Win2 , и я создал новый класс для реализации Win1 .
public partial class App : Application
{
// Params...
public App()
{
Client = LoadNetwork();
User = LoadUser(Client); // Shows Win1
Games = LoadMinigames();
mainWindow = new MainWindow(User, Games);
Application.Current.MainWindow = mainWindow; // On XAML default is Hidden
mainWindow.Show(); // Shows Win2
}
// Other methods...
}
Самая большая проблема для меня - передать данные User в MainWindow , и у меня не так много идей о том, как справиться с этим делом.
Обновление
public partial class MainWindow : Window
{
public UserLoading ul;
public UserRegistering ur;
public User.UserProfile User;
private List<Game.Game> Games;
public Label Username;
public MainWindow(User.UserProfile user, List<Game.Game> games)
{
User = new UserProfile();
InitializeComponent();
User = user;
Games = games;
Username.Content = User.Username;
DrawList(Games);
}
//...
}
Я понимаю, что немного объяснил себе, что несколько раз перечитал свой вопрос. Поэтому я пытаюсь прояснить ситуацию, сообщив здесь мой ответ на один из комментариев.
Метод UserLoad не блокирует, потому что внутри него создаются экземпляры классов, которые наследуют Window (другие окна для входа в систему и регистрации другими словами), затем поток выполнения продолжается и создает экземпляр MainWindow, где, естественно, аргумент «user» приведет к нулю потому что формы еще не были заполнены. Теперь я понимаю, что, возможно, я плохо себя объяснил. Вызов Win1 не блокируется, и я хотел бы, чтобы он возвращался только тогда, когда пользовательские данные готовы для передачи в качестве аргумента в Win2.