Использование VS2019 - приложение WPF: Моя цель - обновить приложение родительского окна ListBox в реальном времени, отредактировав немодальное дочернее окно TextBox, возможно ли это?
Представьте себе приложение, в котором есть список пользователей, для которогоВы можете добавлять, удалять, редактировать и просматривать.Add и Edit работают одним модальным окном с разными методами.Представление должно быть немодальным окном (поэтому я создал другой класс), и оно должно выполнять оперативное обновление пользовательских данных в ListBox.
MainWindow.cs:
public UserDlg userDlg; //modal window (it has OK/cancel buttons)
public UserView userView; //modeless window (it has only Close button)
public List<User> users = new List<User>(); // a distinct user class that also has a method .getUser() that prints user data to String.
private void View(object sender, RoutedEventArgs e) { //view button
userView.Show();
userView.openEdition(users[sel].fName, users[sel].lName, users[sel].eMail);// it passes ListBox selected user data to new window (works)
}
private void UsersList_SelectionChanged(object sender, SelectionChangedEventArgs e){ //ListBox changes here
...if (userView != null && userView.IsVisible)
{
userView.openEdition(users[sel].fName, users[sel].lName, users[sel].eMail); // this updates selection in modeless window (works)
}
UserView.cs:
public void FName1_TextChanged(object sender, TextChangedEventArgs e)
{
Console.WriteLine(fName1.Text + " / " + lName1.Text + " / " + eMail1.Text); //this part is to show me that every character written/removed works fine
user.setUserData(getFirstName(), getLastName(), getMailAddress());
string dataToPass = user.getUser(); // - here I tried with RoutedEventHandler (something I found on web) but I managed to only send preinitialized string with a button - not a real-time text changed from textbox
}
public void openEdition(string fName, string lName, string eMail)
{
user = new User(fName, lName, eMail);
fName1.Text = fName;
lName1.Text = lName;
eMail1.Text = eMail;
}
Я ожидаю изменить данные в родительском режиме в реальном времени, изменив текстовое поле в немодальном дочернем элементе ... какие-либо идеи?
РЕДАКТИРОВАТЬ: Я использовал (некоторые ошибочные) знания из Java, я думаю.Я думал о создании UserView с окном MainWindow в качестве параметра .. как родитель, это сработало, и я верю, что каким-то образом удалось решить мою проблему?- Тестирование прямо сейчас (я вернусь через 10-15 минут, я надеюсь.) >> UserView.cs:
MainWindow window;
public UserView(MainWindow window){ this.window = window; ... }
Теперь я могу просто вызвать window.usersList.Items.Add ("Test").);например.