WPF:实现无标题栏窗体的拖动
2012-06-08 15:00
330 查看
通过Grid模拟实现一个标题栏:
<Grid Name="gridTitleBar" Grid.Row="0">
<Grid.Background>
<ImageBrush ImageSource="pack://application:,,,/images/banner.jpg" Stretch="Fill" TileMode="None" />
</Grid.Background>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="Auto" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Image Grid.Column="0" Margin="4" Source="pack://application:,,,/images/cmbc.gif" HorizontalAlignment="Left" />
<Label Grid.Column="1" Content="人脸采集系统" FontSize="48" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" FontFamily="STCaiyun" Margin="4" Foreground="White"></Label>
<StackPanel Grid.Column="2" Margin="4" FlowDirection="RightToLeft" Orientation="Horizontal" HorizontalAlignment="Right">
<Button Click="CloseButton_Click" Margin="2,0" ToolTip="关闭">
<Image Source="pack://application:,,,/images/close.png"></Image>
</Button>
<Button Click="MinimizeButton_Click" Margin="2,0" ToolTip="最小化">
<Image Source="pack://application:,,,/images/minimize.png"></Image>
</Button>
</StackPanel>
</Grid>
在代码中重写OnMouseLeftButtonDown函数:
程序界面:
<Grid Name="gridTitleBar" Grid.Row="0">
<Grid.Background>
<ImageBrush ImageSource="pack://application:,,,/images/banner.jpg" Stretch="Fill" TileMode="None" />
</Grid.Background>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="Auto" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Image Grid.Column="0" Margin="4" Source="pack://application:,,,/images/cmbc.gif" HorizontalAlignment="Left" />
<Label Grid.Column="1" Content="人脸采集系统" FontSize="48" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" FontFamily="STCaiyun" Margin="4" Foreground="White"></Label>
<StackPanel Grid.Column="2" Margin="4" FlowDirection="RightToLeft" Orientation="Horizontal" HorizontalAlignment="Right">
<Button Click="CloseButton_Click" Margin="2,0" ToolTip="关闭">
<Image Source="pack://application:,,,/images/close.png"></Image>
</Button>
<Button Click="MinimizeButton_Click" Margin="2,0" ToolTip="最小化">
<Image Source="pack://application:,,,/images/minimize.png"></Image>
</Button>
</StackPanel>
</Grid>
在代码中重写OnMouseLeftButtonDown函数:
// 支持标题栏拖动 protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e) { base.OnMouseLeftButtonDown(e); // 获取鼠标相对标题栏位置 Point position = e.GetPosition(gridTitleBar); // 如果鼠标位置在标题栏内,允许拖动 if (e.LeftButton == MouseButtonState.Pressed) { if (position.X >= 0 && position.X < gridTitleBar.ActualWidth && position.Y >= 0 && position.Y < gridTitleBar.ActualHeight) { this.DragMove(); } } }
程序界面:
相关文章推荐
- C#中怎么实现窗体无标题栏拖动
- C#无标题栏也要实现窗体拖动
- vb.net实现无标题栏窗体可拖动
- 窗体镂空效果以及无标题栏窗体鼠标拖动效果的实现
- C# 使用重载消息处理函数的方式,实现没有标题栏的窗体的拖动。
- c# 实现用鼠标拖动没有标题栏的窗口(窗体的任何部分都可实现拖动效果)
- C#实现无标题栏窗体的拖动
- C#实现无标题栏窗体的拖动
- 『WPF』实现拖动文件到窗体(控件)
- vb.net实现无标题栏窗体可拖动
- 三种方法实现Delphi无标题窗体的拖动
- java中 实现无标题无边框的窗体能够用鼠标拖动改变窗口大小
- 实现用鼠标拖动没有标题栏的窗口(窗体的任何部分都可实现拖动效果)
- (1_255)Qt拖动没有标题栏的窗体
- 7_C# 实现VMS客户端——窗体设计_无标题窗体设计
- Wpf拖动按钮实现(二)
- 拖动没有标题栏的窗体
- MFC无边框的窗体实现用鼠标拖动窗体边缘实现窗体大小变化
- .Net 环境下实现可变大小的无标题窗口拖动
- WPF下实现控件的拖动操作