如何确定窗口是否已被销毁?(涉及IT技术)

5

我在一个WPF的MainWindow1.Xaml文件中有一个函数,用于应用程序关闭。但是在某些情况下,用户可能会以其他方式关闭应用程序,而不是使用“文件 > 关闭”按钮。我只需要知道在“Closing”方法中,当前的MainWindow1.xaml是否已经被处理掉了。但是我找不到任何属性。

你能帮我吗?

2个回答

10

你可以尝试一下

var source = PresentationSource.FromVisual(yourWindow)
如果source为null或source.IsDisposed == true,那就表示你的窗口已关闭。

source.IsDisposed 始终为 false,否则 PresentationSource.FromVisual 将不会返回该源。 - tm1

1

您可以附加到Window上的Closed事件。 当调用此事件时,窗口将关闭。实际上我必须更正:根据MSDN文档,这仅意味着在调用此事件时无法阻止窗口关闭。
如果监听Closed事件不够好,则还有另一种选择:如何判断WPF窗口是否已关闭?


1
感谢您的回复ChrisWue。我会尝试这种方式:<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="SDKSample.App" ShutdownMode="OnExplicitShutdown" />,并使用MainWindow1.IsLoaded属性... - goldengel
无法工作。请查看此处的情况:[链接](http://www.goldengel.ch/temp/WPF%20Window%20is%20closing%20disposing.png) - goldengel
我认为你正在尝试在窗口已经关闭时调用“Close”。我不确定你的目标是什么,也许你可以解释得更多。 - ChrisWue

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接