aks*_*aks 5 wpf dispose window showdialog
问题是WPF Window没有实现IDisposable接口,这让我相信,当我通过调用ShowDialog()打开它时我不必手动处理它,但是这个MSDN页面上的第一条评论说明不同.有谁知道真相是什么?
仅当您使用Show()而不是ShowDialog()打开窗口时.
从文档:
如果通过调用ShowDialog打开的窗口以及其IsCancel属性设置为true的Button将在单击按钮或按下ESC时自动关闭.但是,如果使用Show打开窗口,则必须显式调用Close,例如来自Button的Click事件处理程序.
和:
关闭窗口会导致Closing事件被引发.如果未取消Closing事件,则会发生以下情况:
- 从Application.Windows中删除窗口(如果存在Application对象).
- 如果在显示拥有的窗口之前和打开所有者窗口之后建立了所有者/所有者关系,则会从所有者窗口中删除窗口.
- Closed事件被提出.
- 窗口创建的非托管资源将被释放.
- 如果调用ShowDialog来显示Window,则显示ShowDialog.