WPF 实现拖动边框事件
时间: 2024-01-01 08:18:07 浏览: 23
WPF 中实现拖动边框事件可以通过以下步骤来完成:
1. 在 XAML 中定义边框控件,并设置边框的鼠标事件。
```xml
<Border BorderThickness="5" BorderBrush="Black" MouseDown="Border_MouseDown" MouseMove="Border_MouseMove" MouseUp="Border_MouseUp">
<!-- 控件内容 -->
</Border>
```
2. 在鼠标按下事件中记录鼠标的位置和边框的大小。
```csharp
private Point startPoint;
private double startWidth;
private double startHeight;
private void Border_MouseDown(object sender, MouseButtonEventArgs e)
{
startPoint = e.GetPosition(null);
startWidth = ((FrameworkElement)sender).ActualWidth;
startHeight = ((FrameworkElement)sender).ActualHeight;
}
```
3. 在鼠标移动事件中计算边框的新位置和大小,并设置边框的属性。
```csharp
private void Border_MouseMove(object sender, MouseEventArgs e)
{
if (e.LeftButton == MouseButtonState.Pressed)
{
Point newPoint = e.GetPosition(null);
double deltaX = newPoint.X - startPoint.X;
double deltaY = newPoint.Y - startPoint.Y;
((FrameworkElement)sender).Width = Math.Max(startWidth + deltaX, 0);
((FrameworkElement)sender).Height = Math.Max(startHeight + deltaY, 0);
}
}
```
4. 在鼠标释放事件中清除记录的数据。
```csharp
private void Border_MouseUp(object sender, MouseButtonEventArgs e)
{
startPoint = new Point();
startWidth = 0;
startHeight = 0;
}
```
这样就可以实现边框的拖动事件了。