WPF 自定义标题栏 拖拉缩放
WPF 自定义标题栏拖拉缩放需要以下步骤:
-
定义自定义标题栏控件,包含标题、最小化、最大化、关闭等按钮。
-
在自定义标题栏控件中添加鼠标事件处理程序,实现拖动和缩放窗口的功能。
-
在窗口的样式中设置无边框,并设置窗口的样式为None。
-
在窗口中添加自定义标题栏控件,并将其放置在窗口的顶部。
下面是一个简单的示例代码:
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。
最后运行程序,即可看到自定义标题栏和拖拉缩放窗口的效果。
原文地址: https://www.cveoy.top/t/topic/bqcV 著作权归作者所有。请勿转载和采集!