C# WPF中的可拖动控件?
虽然我在表单方面有一些经验,但我对WPF还是有点陌生,我决定最终尝试找出如何使用WPF。因此,当我谈到可拖动控件时,这就是我提出的代码(我试图将其更改为与WPF一起使用,但控件只是到处抖动):C# WPF中的可拖动控件?,c#,wpf,xaml,drag-and-drop,C#,Wpf,Xaml,Drag And Drop,虽然我在表单方面有一些经验,但我对WPF还是有点陌生,我决定最终尝试找出如何使用WPF。因此,当我谈到可拖动控件时,这就是我提出的代码(我试图将其更改为与WPF一起使用,但控件只是到处抖动): 您需要使用来实现拖动、调整大小、旋转等操作。如果您需要手动操作,请使用以下算法: 在MouseDown事件中:保存鼠标位置、控件的左上角位置和这些坐标的增量(偏移),并将一些布尔字段标志设置为true,例如isdragstarted 在MouseMove上,检查拖动是否已启动,并使用鼠标位置和偏移量计算控
您需要使用来实现拖动、调整大小、旋转等操作。如果您需要手动操作,请使用以下算法:
MouseDown
事件中:保存鼠标位置、控件的左上角位置和这些坐标的增量(偏移),并将一些布尔字段标志设置为true,例如isdragstarted
MouseMove
上,检查拖动是否已启动,并使用鼠标位置和偏移量计算控件左上角位置的新值MouseUp上
事件集isdragstart
为falseMicrosoft.Xaml.Behaviors.Wpf
xmlns:behaviors=”http://schemas.microsoft.com/xaml/behaviors"
我真的很想从头开始编写代码,比如只使用事件和边距等基本内容。这对于拖动控件来说真的不是一个明智的想法,这是一项相当“不平凡”的任务。否则WPF就不会从一开始就引入装饰器的概念:)装饰器真的是一条路要走
private void rectangle1_MouseMove(object sender, MouseEventArgs e)
{
if (e.LeftButton == MouseButtonState.Pressed) {
double x = this.Left + (double)e.GetPosition(this).X - (double)rectangle1.Margin.Left;
double y = this.Top + (double)e.GetPosition(this).Y - (double)rectangle1.Margin.Top;
rectangle1.Margin = new Thickness(x, y, rectangle1.Margin.Right, rectangle1.Margin.Bottom);
}
}