WPF窗口关闭事件用法
问题描述:
我有Window
类(例如public partial class Foo : Window
),当我创建窗口时,我注册了Closed
事件。WPF窗口关闭事件用法
foo = new Foo();
foo.Closed += FooClosed;
public void FooClosed(object sender, System.EventArgs e)
{
}
当有人按下foo
窗口我称之为this.Close()
内的按钮,但我FooClosed
似乎并没有被调用。
我错误地注册了该活动吗?
更新
顺便说一句,所有我想做到的是知道时foo
已经关闭,所以我可以设置参考回null
。有没有更好的方法来实现这一目标?
答
问题得到回答,前几天检查Execute code when a WPF closes
你可能有一些事情与你的代码,因为这工作对我蛮好。
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();
}
}
}
它看起来不错,但表现出多一点的上下文。在哪个类是FooClosed()以及其他代码被调用的地方? – 2012-04-05 18:01:57
显然代码是正确的! – 2012-04-05 18:04:35
'Foo:Window'不会重写任何'Window'事件,或者有一个隐式的析构函数/终结器,是吗? – Alain 2012-04-05 18:20:11