3

如果带有用户控件的窗口正在关闭,那么我应该在用户控件中调用一个方法,即只有在释放用户控件时才调用。我怎么做?

4

3 回答 3

3

如果您想知道垃圾收集器何时收集,请UserControl使用:

    ~UserControl1()
    {
        //...
    }

如果您想知道何时UserControl从其父级卸载,Unloaded请在 userControl 上使用事件

注意:与 a 不同Window, aUserControl不能关闭。

于 2012-10-26T11:41:56.860 回答
0

由于 contols 没有 Closing/Closed 事件,它不像重写 Dispose 那样简单。在某些情况下可能不会调用 Dispose。

您可能会覆盖控件的 WndProc 并捕获 WM_CLOSE 事件。

于 2012-10-26T11:48:14.757 回答
-1

供其他人将来参考..

我处置了我的主窗口加载的用户控件,如下所示:

<UserControl x:Class="MyApp.Class" ... Unloaded="UserControl_Unloaded"></UserControl>

private void UserControl_Unloaded(object sender, RoutedEventArgs e)
{
    ((MyVM)this.DataContext).Dispose();
}

Unloaded是任何视图上可用的事件。

于 2015-08-27T12:44:39.257 回答