WPF 自定义标题栏拖拉缩放需要以下步骤:

  1. 定义自定义标题栏控件,包含标题、最小化、最大化、关闭等按钮。

  2. 在自定义标题栏控件中添加鼠标事件处理程序,实现拖动和缩放窗口的功能。

  3. 在窗口的样式中设置无边框,并设置窗口的样式为None。

  4. 在窗口中添加自定义标题栏控件,并将其放置在窗口的顶部。

下面是一个简单的示例代码:

CustomTitleBar.xaml:

<UserControl x:Class="CustomTitleBar">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="Auto" />
        </Grid.ColumnDefinitions>
        <TextBlock Text="Title" VerticalAlignment="Center" />
        <StackPanel Grid.Column="1" Orientation="Horizontal">
            <Button Content="_" Margin="5 0" Click="MinimizeButton_Click" />
            <Button Content="□" Margin="5 0" Click="MaximizeButton_Click" />
            <Button Content="X" Margin="5 0" Click="CloseButton_Click" />
        </StackPanel>
    </Grid>
</UserControl>

CustomTitleBar.xaml.cs:

public partial class CustomTitleBar : UserControl
{
    public CustomTitleBar()
    {
        InitializeComponent();
    }

    private void MinimizeButton_Click(object sender, RoutedEventArgs e)
    {
        Window.GetWindow(this).WindowState = WindowState.Minimized;
    }

    private void MaximizeButton_Click(object sender, RoutedEventArgs e)
    {
        Window window = Window.GetWindow(this);
        if (window.WindowState == WindowState.Maximized)
        {
            window.WindowState = WindowState.Normal;
        }
        else
        {
            window.WindowState = WindowState.Maximized;
        }
    }

    private void CloseButton_Click(object sender, RoutedEventArgs e)
    {
        Window.GetWindow(this).Close();
    }

    private void Grid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        Window.GetWindow(this).DragMove();
    }

    private void Grid_MouseDoubleClick(object sender, MouseButtonEventArgs e)
    {
        MaximizeButton_Click(sender, e);
    }
}

MainWindow.xaml:

<Window x:Class="MainWindow"
        Style="{StaticResource WindowStyle}"
        WindowStyle="None">
    <Grid>
        <local:CustomTitleBar />
        <Grid>
            <!-- 窗口内容 -->
        </Grid>
    </Grid>
</Window>

MainWindow.xaml.cs:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }
}

WindowStyle.xaml:

<Style x:Key="WindowStyle" TargetType="{x:Type Window}">
    <Setter Property="WindowChrome.WindowChrome">
        <Setter.Value>
            <WindowChrome CaptionHeight="0" CornerRadius="0" GlassFrameThickness="1" NonClientFrameEdges="None" ResizeBorderThickness="5" UseAeroCaptionButtons="False" />
        </Setter.Value>
    </Setter>
</Style>

在WindowStyle中设置了WindowChrome属性,将窗口的边框和标题栏去掉,并设置了窗口的缩放边框厚度为5。

最后运行程序,即可看到自定义标题栏和拖拉缩放窗口的效果。

WPF 自定义标题栏 拖拉缩放

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

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