假设我有一个自定义UserControl的窗口,并且UserControl里面有一个文本框。当我拖动窗口时,TextBox如何检测到它正在移动?如何检测控件正在移动?
我试图围绕它的RenderTransform属性进行搜索,当“Freezable对象或其中一个对象发生变化时”会触发Change事件。没有确凿..
编辑:
在我而言,我没有看到的窗口,我看到的是用户控件,我不能去任何更高。
假设我有一个自定义UserControl的窗口,并且UserControl里面有一个文本框。当我拖动窗口时,TextBox如何检测到它正在移动?如何检测控件正在移动?
我试图围绕它的RenderTransform属性进行搜索,当“Freezable对象或其中一个对象发生变化时”会触发Change事件。没有确凿..
编辑:
在我而言,我没有看到的窗口,我看到的是用户控件,我不能去任何更高。
您需要订阅窗口事件,因为您的文本框并未实际移动(最有可能位于与窗口相关的相同位置),因此您可以订阅Window.LocationChanged
事件以在窗口移动时收到通知。
但是,如果你的控件没有绝对位置,那么你需要解析Window.SizeChanged
这将告诉你用户何时调整窗口大小,但它是一个离散的最终事件,而不是一个正在进行的事件。
尝试订阅UserControl的LayoutUpdated事件。
这是一个很好的提示。使用LayoutUpdated时,确保在做昂贵的工作之前检查控件是否已移动。 LayoutUpdated事件触发的不止是位置更改。如果您在控件上设置了任何动画,LayoutUpdated事件往往会激发一个LOT。 – 2014-04-04 19:24:42
谢谢。但是这在我的情况下不起作用,因为实际上文本框在一个UserControl中,它在一个粘性的mdi窗口中。从我的代码中我看不到mdi,所以我根本无法做任何事情。我说我有一个窗口只是为了简化情况。我需要做的是以不同的方式处理这个案例。它不应该是一个引发事件的框架,并告诉大家他们已经被移动了。该文本框必须检测其位置已经改变,本身。 – Mohamed 2011-05-10 10:45:56
这也不适用于使用拖放控件的应用程序......这是我的问题。 – 2011-12-19 12:52:30