I have a Window
class (e.g. public partial class Foo : Window
), and when I create the window I sign up for the Closed
event as such.
foo = new Foo();
foo.Closed += FooClosed;
public void FooClosed(object sender, System.EventArgs e)
{
}
When someone presses a button inside the foo
Window I call this.Close()
but my FooClosed
doesn't seem to be called.
Am I incorrectly signing up for the event?
Update
By the way, all I'm trying to accomplish is know when foo
has been closed so I can set the reference back to null
. Is there a better way to accomplish that?
Question was answered a few days ago check Execute code when a WPF closes
You may have something going on with your code because this works just fine for me.
MainWindow.xaml.cs
namespace WpfApplication1
{
public partial class MainWindow : Window
{
private Foo foo;
public MainWindow()
{
InitializeComponent();
foo = new Foo();
foo.Closed += FooClosed;
foo.Show();
}
public void FooClosed(object sender, System.EventArgs e)
{
//This gets fired off
foo = null;
}
}
}
Foo.xaml
<Window x:Class="WpfApplication1.Foo"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Foo" Height="300" Width="300">
<Grid>
<Button Click="Button_Click">Close</Button>
</Grid>
</Window>
Foo.xaml.cs
namespace WpfApplication1
{
/// <summary>
/// Interaction logic for Foo.xaml
/// </summary>
public partial class Foo : Window
{
public Foo()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With