4

Windowクラス (例: )があり、ウィンドウを作成するときに、そのイベントpublic partial class Foo : Windowにサインアップします。Closed

foo = new Foo();
foo.Closed += FooClosed;


public void FooClosed(object sender, System.EventArgs e)
{
}

foo誰かがウィンドウ内のボタンを押すと、呼び出しますthis.Close()が、FooClosed呼び出されないようです。

イベントに間違ってサインアップしていますか?

アップデート

ところで、私が達成しようとしているのは、 がいつ閉じられたかを知るfooことだけなので、参照を に戻すことができますnull。それを達成するためのより良い方法はありますか?

4

1 に答える 1

11

質問は数日前に回答されました WPF が閉じるときにコードを実行するを確認してください

これは私にとってはうまく機能するため、コードで何かが起こっている可能性があります。

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();
        }
    }
}
于 2012-04-05T18:04:09.823 に答える