WPF 自定义标题栏实现自适应拖动可以通过以下步骤实现:

  1. 在 XAML 中定义一个自定义的标题栏控件,包含一个文字标签和一个拖动区域。
    ```xml
    <UserControl x:Class="CustomTitleBar.TitleBarControl"
                 ...
                 >
      <Grid>
        <Grid.ColumnDefinitions>
          <ColumnDefinition Width="*" />
          <ColumnDefinition Width="Auto" />
        </Grid.ColumnDefinitions>
        <TextBlock Text="{Binding Title}" VerticalAlignment="Center" Margin="10" />
        <Rectangle Fill="Transparent" Grid.Column="1" Width="20" Height="20" Margin="5" MouseLeftButtonDown="Rectangle_MouseLeftButtonDown" />
      </Grid>
    </UserControl>
    ```
    
  2. 在标题栏控件的代码中,实现鼠标按下事件处理程序,用于开始拖动窗口。
    ```csharp
    public partial class TitleBarControl : UserControl
    {
      public string Title { get; set; }
    
      public TitleBarControl()
      {
        InitializeComponent();
      }
    
      private void Rectangle_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
      {
        var window = Window.GetWindow(this);
        window?.DragMove();
      }
    }
    ```
    
  3. 在窗口的 XAML 中,使用自定义的标题栏控件,并设置窗口的样式为 None,以隐藏系统默认的标题栏。
    ```xml
    <Window x:Class="CustomTitleBar.MainWindow"
            ...
            WindowStyle="None">
      <Grid>
        <local:TitleBarControl Title="Custom Title Bar" />
        <TextBlock Text="Hello, world!" Margin="10" />
      </Grid>
    </Window>
    ```
    

这样,就可以实现一个自适应的 WPF 自定义标题栏,并且可以通过拖动标题栏来拖动整个窗口。

WPF 自适应标题栏实现 - 轻松拖动窗口

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

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