我创建了一个可拖动控件,它希望限制在其包含网格的边界内(即不允许用户将其拖动到网格之外)。
我需要一个返回 true 或 false 的测试,以便我可以在必要时取消拖动。
我查看了 VisualTreeHelper.FindElementsInHostCoordinates 和 TransformToVisual 等,但如果不对控件的每个角进行大量检查,我就找不到一种简单的方法。
例如一些代码(对话框是被拖动控件的名称):
MouseEventHandler mouseMove = (s, args) =>
{
var transform = new TranslateTransform();
transform.X = args.GetPosition(Dialog).X - _mouseDownPosition.X;
transform.Y = args.GetPosition(Dialog).Y - _mouseDownPosition.Y;
if (transformGroup != null)
{
transformGroup.Children.Add(transform);
Dialog.RenderTransform = transformGroup;
}
};