그리드가 포함 된 경계로 제한하려는 드래그 가능한 컨트롤을 만들었습니다 (즉, 사용자가 그리드 외부로 드래그하지 못하게 함).Silverlight가 Grid 경계 안에 있습니다.
필요한 경우 드래그를 취소 할 수 있도록 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;
}
};