更新模态对话框上的父页面关闭?

时间:2012-08-15 12:50:20

标签: c# .net wpf

我有一个带网格的窗口。该窗口有一个按钮,当按下该按钮时,会显示一个模态对话框。

代码:

    private void Edit_Click6S(object sender, RoutedEventArgs e)
    {
        TextEditWindow editWindow = new TextEditWindow();
        editWindow.ShowDialog();
    }

当用户完成此对话框时,将调用以下代码:

    Window.Close()

但父窗口的网格未更新。有没有办法在子对话框关闭时重新初始化父窗口网格?是这样,怎么样?

2 个答案:

答案 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;
     }
}