本教程将指导你如何在 WPF 应用程序中创建自适应的自定义标题栏,并实现拖动功能。

  1. 创建一个自定义标题栏的 UserControl 在 Visual Studio 中,右键点击项目,选择 Add -> New Item -> UserControl,命名为 CustomTitleBar。在 CustomTitleBar.xaml 中添加如下代码:
<UserControl x:Class='CustomTitleBar'
             xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'
             xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'
             MouseLeftButtonDown='CustomTitleBar_MouseLeftButtonDown'
             MouseLeftButtonUp='CustomTitleBar_MouseLeftButtonUp'
             MouseMove='CustomTitleBar_MouseMove'>
    <Grid Background='#FF2A2A2A'>
        <TextBlock Text='Custom Title Bar' VerticalAlignment='Center' HorizontalAlignment='Center'/>
    </Grid>
</UserControl>

这里我们只是简单地在标题栏上添加了一个文本标签,你可以根据需要进行更改。

  1. 在主窗口中添加 CustomTitleBar 在 MainWindow.xaml 中,添加如下代码:
<Window x:Class='MainWindow'
        xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'
        xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'
        xmlns:local='clr-namespace:YourNamespace'
        Title='MainWindow' Height='350' Width='525'>
    <Grid>
        <local:CustomTitleBar Height='40' VerticalAlignment='Top' Margin='0,0,0,10'/>
    </Grid>
</Window>

这里我们将 CustomTitleBar 添加到了主窗口的 Grid 中,并设置了 Height、VerticalAlignment 和 Margin。

  1. 实现拖动功能 在 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 自适应自定义标题栏并实现拖动功能的过程。

WPF 自适应自定义标题栏实现拖动功能教程

原文地址: http://www.cveoy.top/t/topic/mQQ9 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录