WPF 自定义可拖动标题栏
要注意,拖拽的地方,需要加背景色,否则 DrageMove 将无效
MainWindows.xaml
<Window x:Class="Report.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:views="clr-namespace:Report.Views" WindowState="Normal" WindowStyle="None" ResizeMode="NoResize" WindowStartupLocation="CenterScreen"
mc:Ignorable="d" d:DesignWidth="1280" d:DesignHeight="720" Width="780" Height="360">
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<!--<ResourceDictionary Source="/VipSoft.Themes;component/Styles/MainWindow.xaml"/>-->
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<Border Style="{StaticResource Layout-Border}">
<DockPanel>
<DockPanel LastChildFill="False" Dock="Top" Height="40" Background="#1F6AAC" MouseLeftButtonDown="DockContainer_OnDragMove" >
<Image Name="LoginLogoImage" Style="{StaticResource Logo-Image}"/>
<TextBlock Name="TitleBlock" Style="{StaticResource Layout-Title}" Text="XX 信息管理系统"></TextBlock>
<Button DockPanel.Dock="Right" Style="{StaticResource Button-Close}" ToolTip="关闭" Click="Close_OnClick"></Button>
<ToggleButton DockPanel.Dock="Right" Style="{StaticResource Button-Max}" Name="TopMaxButton" Click="MaxButton_Click" ></ToggleButton>
<Button DockPanel.Dock="Right" Style="{StaticResource Button-Min}" ToolTip="最小化" Click="MinButton_Click" ></Button>
<Button DockPanel.Dock="Right" Style="{StaticResource Button-Top-Bar}" Content="" ToolTip="帮助"></Button>
<Button DockPanel.Dock="Right" Style="{StaticResource Button-Top-Bar}" Content="" ToolTip="设置"></Button>
</DockPanel>
<DockPanel>
<views:Navigate Padding="5" Background="#F1F2F3" Width="70" x:Name="NavigateMenu" MenuClick="Navigate_OnMenuClick"></views:Navigate>
<Border BorderBrush="#D1D3D5" BorderThickness="0.9,0,0,0" Padding="2" Background="#F1F2F3" >
<ContentControl Name="MainContent" ></ContentControl>
</Border>
</DockPanel>
</DockPanel>
</Border>
</Window>
MainWindows.xaml.cs
private void DockContainer_OnDragMove(object sender, MouseButtonEventArgs e)
{
switch (e.ClickCount)
{
// Background="White" 事件所在的容器,不加这个属性,不能拖拽
case 1://单击
{
this.DragMove();
break;
}
case 2://双击
{
MaxButton_Click(null, null);
TopMaxButton.IsChecked = WindowState == WindowState.Maximized;
break;
}
}
} private void MaxButton_Click(object sender, RoutedEventArgs e)
{
WindowState = WindowState == WindowState.Maximized ? WindowState.Normal : WindowState.Maximized;
} private void MinButton_Click(object sender, RoutedEventArgs e)
{
WindowState = WindowState.Minimized;
} private void Close_OnClick(object sender, RoutedEventArgs e)
{
MessageBoxResult vr = System.Windows.MessageBox.Show("确定要退出应用吗", "操作提示",MessageBoxButton.YesNo, MessageBoxImage.Question);
if (vr == MessageBoxResult.OK) // 如果是确定,就执行下面代码,记得换上自己的代码喔
{
Close();
System.Windows.Application.Current.Shutdown();
}
}

WPF 自定义可拖动标题栏的更多相关文章
- wpf 自定义窗口,最大化时覆盖任务栏解决方案
原文:wpf 自定义窗口,最大化时覆盖任务栏解决方案 相信很多人使用wpf时会选择自定义美观的窗口,因此会设置WindowStyle="None" 取消自带的标题栏.但这样使用 W ...
- WPF 自定义柱状图 BarChart
WPF 自定义柱状图 当前的Telerik控件.DevExpress控件在图表控件方面做得不错,但是有时项目中需要特定的样式,不是只通过修改图表的模板和样式就能实现的. 或者说,通过修改当前的第三方控 ...
- WPF 自定义 MessageBox (相对完善版)
WPF 自定义 MessageBox (相对完善版) 基于WPF的自定义 MessageBox. 众所周知WPF界面美观.大多数WPF元素都可以简单的修改其样式,从而达到程序的风格统一.可是当 ...
- [转载]WPF控件拖动
这篇博文总结下WPF中的拖动,文章内容主要包括: 1.拖动窗口 2.拖动控件 Using Visual Studio 2.1thumb控件 2.2Drag.Drop(不连续,没有中间动画) 2.3拖动 ...
- WPF 自定义 MessageBox (相对完善版 v1.0.0.6)
基于WPF的自定义 MessageBox. 众所周知WPF界面美观.大多数WPF元素都可以简单的修改其样式,从而达到程序的风格统一.可是当你不得不弹出一个消息框通知用户消息时(虽然很不建议在程序中频繁 ...
- WPF自定义TextBox及ScrollViewer
原文:WPF自定义TextBox及ScrollViewer 寒假过完,在家真心什么都做不了,可能年龄大了,再想以前那样能专心坐下来已经不行了.回来第一件事就是改了项目的一个bug,最近又新增了一个新的 ...
- WPF 自定义图片剪切器 - 头像剪切(扩展与完善、实时截图)
原文:WPF 自定义图片剪切器 - 头像剪切(扩展与完善.实时截图) 一.说明:上一次写的"WPF 自定义图片剪切器 - 头像剪切.你懂得"存在明显的缺陷,由于篇幅较长.重新写了一 ...
- 自定义 Activity 的 标题栏 TitleBar
自定义 Activity 的 标题栏 TitleBar 1. 修改标题栏的高度,背景 编辑styles.xml,添加: <?xmlversion="1.0" encoding ...
- wpf 自定义圆形按钮
wpf 自定义圆形按钮 效果图 默认样式 获取焦点样式 点击样式 下面是实现代码: 一个是自定义控件类,一个是控件类皮肤 using System; using System.Collections. ...
- WPF自定义窗口基类
WPF自定义窗口基类时,窗口基类只定义.cs文件,xaml文件不定义.继承自定义窗口的类xaml文件的根节点就不再是<Window>,而是自定义窗口类名(若自定义窗口与继承者不在同一个命名 ...
随机推荐
- jap复制一条数据插入数据库,报:identifier of an instance of com.kxkd.shop.entity.goods.GoodsSpu was alt
因为修改了jpa实体id 可以先使用springframework的BeanUtils复制一个相同的对象 BeanUtils.copyProperties(source, target); //复制属 ...
- Codeforces 1566E Buds Re-hanging
原题链接 Codeforces Global Round 16 E. Buds Re-hanging 首先想到,如果我们把一个\(buds\)挂到一个叶子上,那么会使得叶子总数减\(1\). 还有就是 ...
- vue常用方法封装收集
// 格式化时间 export function formateTime(date) { var y = date.getFullYear(); var m = date.getMonth() + 1 ...
- 自定义springboot-starter 动态数据源
自定义springboot-starter 动态数据源 如果使用的是spring或springboot框架,spring提供了一个实现动态数据源的一个抽象类AbstractRoutingDataSou ...
- Codeforces Round #691 (Div. 2) D - Glass Half Spilled(DP)
题目 补下因实验漏掉的CF(还以为是晚上,没想到是下午开始).前三题过的很顺利,到D题时想了会发现数据很小爆搜貌似能过,就以为是道水题,交了一发T了,胡乱加了点剪枝还是T.逐渐意识到事情的严重性.考虑 ...
- nordic的nrf52系列32M速率的SPI-SPIM3
简介:在nordic的nrf52系列中的nrf52833和nrf52840的SPIM3都是支持最大32M的spi速率,其余的只有8M,当在需要刷屏,或者一些需要高速32M-SPI时,这是一个很好的使用 ...
- CTT2023 邮寄
从广州被邮寄到了苏州.还有点感冒有点咳嗽,体温 37 度.还是来了. Day 0 清早坐 xp 的车,早上坐飞机,中午坐高铁,下午坐大巴,风尘仆仆地赶到了苏州. 飞机上有一套省选题要验,看了两眼,T1 ...
- 安卓之各组件的LayoutParams分析
文章摘要 在Android开发中,LayoutParams是一个非常重要的概念,它用于描述View在其父容器中的布局行为.不同的ViewGroup有不同的LayoutParams子类,例如Linear ...
- Codeforces Round #426 (Div. 2) problem C
C. The Meaningless Game time limit per test 1 second memory limit per test 256 megabytes input stand ...
- IIS下使用SSL证书
IIS下使用SSL证书 本文介绍windowsServer下SSL证书配置及IIS站点配置 1. 生成SSL证书 在阿里云申请免费SSL证书 登录阿里云管理控制台,打开SSL证书管理 选择免费证 ...