在我拥有的WPF应用程序中,我有一个对应用程序至关重要的控件。此控件名为ArtView
,在主窗口的整个生命周期内都可见。它执行硬件加速渲染,为了避免阻塞UI线程,我在OnLoaded
处理程序中为此控件设置了一个事件循环。鼠标点击,键盘输入和滚动等事件被添加到队列中,然后由事件循环使用,但我遇到的问题是我不知道如何在窗口关闭时结束事件循环。当我关闭包含控件的窗口时,OnUnloaded
不会触发,那么当控件不再可见时禁用事件循环的最佳方法是什么?
我知道我可以做Window.GetWindow(this).Closing += OnWindowClosing;
之类的事情,但感觉就像是黑客。
答案 0 :(得分:0)
dymanoid订阅IsVisibleChanged
的解决方案完美无瑕,并提供了一个比Window
更好的解决方案来清理我的控件。