如何检测控件是否被移动?

Moh*_*med 8 wpf position detect drag

假设我有一个带有自定义UserControl的窗口,UserControl里面有一个文本框.当我拖动窗口时,TextBox如何检测到它正被移动?

我试图搜索它的RenderTransform属性,当"Freezable对象或其中一个对象发生更改"时会触发Change事件.没什么结论..

编辑:

在我的情况下,我没有看到窗口,我看到的只是UserControl,我不能再高了.

Mic*_*han 7

您需要订阅Window事件,因为您的文本框实际上并未移动(最有可能在与窗口相关的相同位置),因此您可以订阅要Window.LocationChanged在窗口移动时收到通知的事件.

但另外如果您的控件没有绝对位置,那么您将需要解析Window.SizeChanged哪个会告诉您何时用户调整了窗口大小,但它是一个离散的最终事件而不是正在进行的事件.


Ete*_*l21 7

尝试订阅 UserControl 的 LayoutUpdated 事件。

  • 这是一个很好的提示。使用 LayoutUpdated 时,请确保在执行昂贵的工作之前检查控件是否已移动。LayoutUpdated 事件触发的不仅仅是位置更改。如果您对控件进行任何动画处理,则 LayoutUpdated 事件往往会触发很多事件。 (2认同)