使用 VS2019 - WPF 应用程序:我的目标是通过编辑无模式子窗口文本框来实时更新父窗口列表框,这可能吗?
想象一个应用程序有一个用户列表,您可以在其中添加、删除、编辑和查看。添加和编辑通过一个模式窗口使用不同的方法工作。View 必须是无模式窗口(所以我创建了另一个类),并且它必须对 ListBox 中的用户数据进行实时更新。
主窗口.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)
}
用户视图.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 中的(一些错误的)知识。我想用 MainWindow 窗口作为参数创建 UserView .. 作为父级,它有效,我相信它以某种方式解决了我的问题?- 立即测试(希望 10-15 分钟后返回。)>> UserView.cs:
MainWindow window;
public UserView(MainWindow window){ this.window = window; ... }
现在我可以简单地调用 window.usersList.Items.Add("Test"); 例如。