如何检测可视树什么时候被销毁?

17 浏览
0 Comments

如何检测可视树什么时候被销毁?

在一个WPF应用程序中,我有一个控件是整个应用程序的核心。这个控件被称为ArtView,在主窗口的整个生命周期中都是可见的。它执行硬件加速渲染,为了避免UI线程阻塞,我在这个控件的OnLoaded处理程序中设置了一个事件循环。像鼠标点击、键盘输入和滚动等事件都被添加到一个队列中,然后由事件循环消耗,但我遇到的问题是,我不知道如何在窗口关闭时结束事件循环。当我关闭包含该控件的窗口时,OnUnloaded不会触发,那么在控件不再可见时禁用事件循环的最佳方法是什么?我知道可以像Window.GetWindow(this).Closing += OnWindowClosing;这样做,但感觉像是一个hack。

admin 更改状态以发布 2023年5月24日
0
0 Comments

dymanoid的订阅IsVisibleChanged的解决方案无懈可击,并且提供了比依赖于Window清理我的控件更为满意的解决方案。

0