WPF 自适应 自定义标题栏并实现拖动功能
WPF 自适应 自定义标题栏并实现拖动功能的步骤如下:
- 创建一个自定义标题栏的 UserControl 在 Visual Studio 中,右键点击项目,选择 Add -> New Item -> UserControl,命名为 CustomTitleBar。在 CustomTitleBar.xaml 中添加如下代码:
这里我们只是简单地在标题栏上添加了一个文本标签,你可以根据需要进行更改。
- 在主窗口中添加 CustomTitleBar 在 MainWindow.xaml 中,添加如下代码:
这里我们将 CustomTitleBar 添加到了主窗口的 Grid 中,并设置了 Height、VerticalAlignment 和 Margin。
- 实现拖动功能 在 CustomTitleBar.xaml.cs 中,添加如下代码:
public partial class CustomTitleBar : UserControl { private bool _isDragging = false; private Point _startPoint;
public CustomTitleBar()
{
InitializeComponent();
}
private void CustomTitleBar_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
_isDragging = true;
_startPoint = e.GetPosition(this);
this.CaptureMouse();
}
private void CustomTitleBar_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
_isDragging = false;
this.ReleaseMouseCapture();
}
private void CustomTitleBar_MouseMove(object sender, MouseEventArgs e)
{
if (_isDragging)
{
Point position = Mouse.GetPosition(null);
Window mainWindow = Application.Current.MainWindow;
mainWindow.Left = position.X - _startPoint.X;
mainWindow.Top = position.Y - _startPoint.Y;
}
}
}
这里我们添加了三个事件处理程序:CustomTitleBar_MouseLeftButtonDown、CustomTitleBar_MouseLeftButtonUp 和 CustomTitleBar_MouseMove。当用户按下鼠标左键时,我们将 _isDragging 置为 true,并记录起始点的位置。当用户释放鼠标左键时,我们将 _isDragging 置为 false。当用户拖动标题栏时,我们计算出窗口应该移动到的位置,并更新窗口的 Left 和 Top 属性。
到此为止,我们就完成了 WPF 自适应 自定义标题栏并实现拖动功能的过程。
原文地址: http://www.cveoy.top/t/topic/bn8A 著作权归作者所有。请勿转载和采集!