如何检测可视树何时被破坏?

时间:2017-11-28 14:24:43

标签: c# wpf

在我拥有的WPF应用程序中,我有一个对应用程序至关重要的控件。此控件名为ArtView,在主窗口的整个生命周期内都可见。它执行硬件加速渲染,为了避免阻塞UI线程,我在OnLoaded处理程序中为此控件设置了一个事件循环。鼠标点击,键盘输入和滚动等事件被添加到队列中,然后由事件循环使用,但我遇到的问题是我不知道如何在窗口关闭时结束事件循环。当我关闭包含控件的窗口时,OnUnloaded不会触发,那么当控件不再可见时禁用事件循环的最佳方法是什么?

我知道我可以做Window.GetWindow(this).Closing += OnWindowClosing;之类的事情,但感觉就像是黑客。

1 个答案:

答案 0 :(得分:0)

dymanoid订阅IsVisibleChanged的解决方案完美无瑕,并提供了一个比Window更好的解决方案来清理我的控件。