WPF canvas内部拖动控件的时候关于不能拖到边界外面的问题,该控件还用装饰器
private void LeftMouseButtonDowm_Body(object sender, MouseButtonEventArgs e)
{
if (e.ClickCount > 1 && _adornedElement is TreeView)
{
TreeView ctrl = _adornedElement as TreeView;
_body.IsHitTestVisible = false;
ctrl.IsHitTestVisible = true;
Keyboard.Focus(ctrl);
return;
}
_startLocation = new Point((double)_adornedElement.GetValue(Canvas.LeftProperty), (double)_adornedElement.GetValue(Canvas.TopProperty));
_startHeight = (double)AdornedElement.GetValue(FrameworkElement.HeightProperty);
_startWidth = (double)AdornedElement.GetValue(FrameworkElement.WidthProperty);
_dragLocation = Mouse.GetPosition(_canvas);
_isDraging = true;
(sender as Rectangle).CaptureMouse();
}
private void MouseMove_Body(object sender, MouseEventArgs e)
{
if (_isDraging)
{
Point parentCanvas = Mouse.GetPosition(_canvas);
if (parentCanvas.X >= 15)
{
_adornedElement.SetValue(Canvas.LeftProperty, _startLocation.X + (parentCanvas.X - _dragLocation.X));
_adornedElement.SetValue(Canvas.TopProperty, _startLocation.Y + (parentCanvas.Y - _dragLocation.Y));
}
}
}

textbox套了装饰器,就是body,现在在canvas里面拖动这个body,但是body不能移到canvas外面,上面的代码能让它在整个画面随意移动,有没有大神有没有比较好的思路,谢谢
{
if (e.ClickCount > 1 && _adornedElement is TreeView)
{
TreeView ctrl = _adornedElement as TreeView;
_body.IsHitTestVisible = false;
ctrl.IsHitTestVisible = true;
Keyboard.Focus(ctrl);
return;
}
_startLocation = new Point((double)_adornedElement.GetValue(Canvas.LeftProperty), (double)_adornedElement.GetValue(Canvas.TopProperty));
_startHeight = (double)AdornedElement.GetValue(FrameworkElement.HeightProperty);
_startWidth = (double)AdornedElement.GetValue(FrameworkElement.WidthProperty);
_dragLocation = Mouse.GetPosition(_canvas);
_isDraging = true;
(sender as Rectangle).CaptureMouse();
}
private void MouseMove_Body(object sender, MouseEventArgs e)
{
if (_isDraging)
{
Point parentCanvas = Mouse.GetPosition(_canvas);
if (parentCanvas.X >= 15)
{
_adornedElement.SetValue(Canvas.LeftProperty, _startLocation.X + (parentCanvas.X - _dragLocation.X));
_adornedElement.SetValue(Canvas.TopProperty, _startLocation.Y + (parentCanvas.Y - _dragLocation.Y));
}
}
}

textbox套了装饰器,就是body,现在在canvas里面拖动这个body,但是body不能移到canvas外面,上面的代码能让它在整个画面随意移动,有没有大神有没有比较好的思路,谢谢
...全文
相关推荐
wpf控件拖动,控件换位置
wpf界面上 控件拖动,以及控件之间的位置对换
WPF中的Canvas上实现控件的拖动、缩放
WPF中的Canvas上实现控件的拖动、缩放
wpf控件拖动改变大小并显示定位和大小
wpf控件拖动改变大小并显示定位和大小,也可在运行时输入数字直接改变控件大小或者canvas定位。
WPF中的可以实现缩放拖拽功能的布局控件
基于Canvas编写的 布局控件 可以实现 以鼠标为中心滚轮缩放 左键拖拽功能
.NET、WPF、 C# 自定义控件拖动,拉伸,改变大小、定位,实时显示位置
你可以在自己的项目中定义任何一个自定义控件,让他产生拖动,放大缩小,定位,显示数值的功能,只需将本项目生成一下,并引用它就可以实现你想要的功能,无需其他任何操作。如何引用?其中有Demo。


