您的位置:首页 > 其它

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函数:

// 支持标题栏拖动
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();
}
}
}


 

程序界面:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  wpf image button