WPF Popup window 关闭事件

WPF Popup window closed event

环境总结: 我的 Visual Studio WPF(非核心)应用程序遇到了障碍。 我创建了 2 个不同的 Windows,其中一个是 MainWindow,软件在其中显示带有绑定的 ListBox 中的数据,第二个是简单的添加数据 window.

在主窗口中,如果我点击“添加新元素”按钮,它将显示新的window(主窗口仍然显示在下方),如下所示:

ModifyDetails details = new ModifyDetails(ListViewPositions.SelectedItem as Positions);
            details.Show();

如果我填写完表格,我会按保存按钮。它将更新数据库,并像这样关闭 window:

...Database updating...
this.Close();

所以问题是我想在关闭“添加新元素”window 后刷新 我的列表框。我可以使用 MainWindow 上的按钮刷新它,所以这个过程很好,但我正在寻找一个 Closing 事件,或者让它自动发生的事情。

刷新进程:

public void Refresh()
        {
            positions.Clear();
            positions = GetProducts();
            ListViewPositions.ItemsSource = positions;
            ListViewPositions.Items.Refresh();
        }

使用此代码:

ModifyDetails details = new ModifyDetails(ListViewPositions.SelectedItem as Positions);
details.ShowDialog();
Refresh();

或:

ModifyDetails details = new ModifyDetails(ListViewPositions.SelectedItem as Positions, this);
details.Show();


//get popup window
CurrentWindow _window;
public ModifyDetails(position,window)
{
   _window = window;
}


...database updating...
//this method define a parent Window => public void Refresh(){//do work...}
_window.Refresh();
this.Close();

我再补个例子

public partial class Window1 : Window
{
    public Window1()
    {
       InitializeComponent();
    }
    
    private void btnGoWindow2_Click(object sender, RoutedEventArgs e)
    {
        Window2 wnd = new Window2();
        wnd.Show(ListViewPositions.SelectedItem as Positions, this);
    }
    
    public void Refresh()
    {
       //update elements...
    }
}  

public partial class Window2 : Window
{
    Window1 window1;
    int position;
    public Window2(int _position, Window1 _window)
    {
       InitializeComponent();
       window1 = _window;
       position = _position;
    }
    
    //other method ....
    
    private void btnCloseWindow_Click(object sender, RoutedEventArgs e)
    {
        window1.Refresh();
        this.Close();
    }
}