我有一个带网格的窗口。该窗口有一个按钮,当按下该按钮时,会显示一个模态对话框。
代码:
private void Edit_Click6S(object sender, RoutedEventArgs e)
{
TextEditWindow editWindow = new TextEditWindow();
editWindow.ShowDialog();
}
当用户完成此对话框时,将调用以下代码:
Window.Close()
但父窗口的网格未更新。有没有办法在子对话框关闭时重新初始化父窗口网格?是这样,怎么样?
答案 0 :(得分:6)
由于对话框阻止执行直到关闭,您可以在ShowDialog()
电话后直接填充网格:
private void Edit_Click6S(object sender, RoutedEventArgs e)
{
TextEditWindow editWindow = new TextEditWindow();
editWindow.ShowDialog();
PopulateGrid();
}
否则,您可以处理对话框的已结束事件
editWindow.Closed += dialog_Closed;
private void dialog_Closed(object sender, System.EventArgs e)
{
PopulateGrid();
}
答案 1 :(得分:0)
再详细说明我的评论;这是一个常见问题,可能有点令人困惑。但是使用委托来管理表单之间的数据。这是一些代码。我不能保证它已准备好编译,但它应该有助于向您展示如何正确地执行此操作。
public partial class MainWindow : Window
{
public delegate void MenuClickedDelegate();
public MainWindow()
{
InitializeComponent();
}
private void MenuItem_Click(object sender, RoutedEventArgs e)
{
YourDialog yourDialog = new YourForm();
yourDialog .MenuClickCallback = new MenuClickedDelegate(this.DoSomething);
yourDialog .ShowDialog();
}
private void DoSomething()
{
}
}
然后是你的对话:
public partial class YourDialog : Window
{
public MainWindow.MenuClickedDelegate MenuClickCallback;
public YourDialog()
{
InitializeComponent();
}
private void Edit_Click6S(object sender, RoutedEventArgs e)
{
this.close();
MenuClickCallback;
}
}