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();
}
}
环境总结: 我的 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();
}
}