要注意,拖拽的地方,需要加背景色,否则 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 自定义可拖动标题栏的更多相关文章

  1. wpf 自定义窗口,最大化时覆盖任务栏解决方案

    原文:wpf 自定义窗口,最大化时覆盖任务栏解决方案 相信很多人使用wpf时会选择自定义美观的窗口,因此会设置WindowStyle="None" 取消自带的标题栏.但这样使用 W ...

  2. WPF 自定义柱状图 BarChart

    WPF 自定义柱状图 当前的Telerik控件.DevExpress控件在图表控件方面做得不错,但是有时项目中需要特定的样式,不是只通过修改图表的模板和样式就能实现的. 或者说,通过修改当前的第三方控 ...

  3. WPF 自定义 MessageBox (相对完善版)

    WPF 自定义 MessageBox (相对完善版)     基于WPF的自定义 MessageBox. 众所周知WPF界面美观.大多数WPF元素都可以简单的修改其样式,从而达到程序的风格统一.可是当 ...

  4. [转载]WPF控件拖动

    这篇博文总结下WPF中的拖动,文章内容主要包括: 1.拖动窗口 2.拖动控件 Using Visual Studio 2.1thumb控件 2.2Drag.Drop(不连续,没有中间动画) 2.3拖动 ...

  5. WPF 自定义 MessageBox (相对完善版 v1.0.0.6)

    基于WPF的自定义 MessageBox. 众所周知WPF界面美观.大多数WPF元素都可以简单的修改其样式,从而达到程序的风格统一.可是当你不得不弹出一个消息框通知用户消息时(虽然很不建议在程序中频繁 ...

  6. WPF自定义TextBox及ScrollViewer

    原文:WPF自定义TextBox及ScrollViewer 寒假过完,在家真心什么都做不了,可能年龄大了,再想以前那样能专心坐下来已经不行了.回来第一件事就是改了项目的一个bug,最近又新增了一个新的 ...

  7. WPF 自定义图片剪切器 - 头像剪切(扩展与完善、实时截图)

    原文:WPF 自定义图片剪切器 - 头像剪切(扩展与完善.实时截图) 一.说明:上一次写的"WPF 自定义图片剪切器 - 头像剪切.你懂得"存在明显的缺陷,由于篇幅较长.重新写了一 ...

  8. 自定义 Activity 的 标题栏 TitleBar

    自定义 Activity 的 标题栏 TitleBar 1. 修改标题栏的高度,背景 编辑styles.xml,添加: <?xmlversion="1.0" encoding ...

  9. wpf 自定义圆形按钮

    wpf 自定义圆形按钮 效果图 默认样式 获取焦点样式 点击样式 下面是实现代码: 一个是自定义控件类,一个是控件类皮肤 using System; using System.Collections. ...

  10. WPF自定义窗口基类

    WPF自定义窗口基类时,窗口基类只定义.cs文件,xaml文件不定义.继承自定义窗口的类xaml文件的根节点就不再是<Window>,而是自定义窗口类名(若自定义窗口与继承者不在同一个命名 ...

随机推荐

  1. Welcome to YARP - 4.限流 (Rate Limiting)

    目录 Welcome to YARP - 1.认识YARP并搭建反向代理服务 Welcome to YARP - 2.配置功能 2.1 - 配置文件(Configuration Files) 2.2 ...

  2. 基于C# Socket实现的简单的Redis客户端

    前言 Redis是一款强大的高性能键值存储数据库,也是目前NOSQL中最流行比较流行的一款数据库,它在广泛的应用场景中扮演着至关重要的角色,包括但不限于缓存.消息队列.会话存储等.在本文中,我们将介绍 ...

  3. macOS上有哪些值得推荐的常用软件

    macOS 作为一款流行的操作系统,拥有丰富的第三方软件生态系统,涵盖了各种领域的应用程序.以下将介绍一些在 macOS 上备受推崇的常用软件,并对它们进行详细的介绍和说明. 1. 生产力工具 a. ...

  4. MYSQL EXPLAIN 执行计划

    EXPLAIN 执行计划 有了慢查询语句后,就要对语句进行分析.一条查询语句在经过 MySQL 查询优化器的各种基于成本和规则的优化会后生成一个所谓的执行计划,这个执行计划展示了接下来具体执行查询的方 ...

  5. QT最小化程序到托盘运行

    MinTray 说明 实现程序关闭时最小化托盘的功能 托盘实现显示主页面和退出的功能 支持扩展,直接引用TrayIcon类即可,对外暴露接口 单例实现,可复用 警告 注:博主所有资源永久免费,若有帮助 ...

  6. XIAMEN_AMOY

    第一份博客,就发布点轻松的内容吧 微雨的清晨 镜头向着前方 越过山丘 海 是像河一样的海 原来真的有随便抓一把都是贝壳的地方 青色,紫色,黄色 转行去做贝壳项链吧 如果不是去海边 那厦门不是一个很晒的 ...

  7. [ABC246B] Get Closer

    section> Problem Statement From the point $(0,0)$ in a two-dimensional plane, let us move the dis ...

  8. 【论文阅读】HTTP 流量和恶意 URL 的异常检测

    Part 1关于论文 基本信息 题目:HTTP 流量和恶意 URL 的异常检测 源码:sec2vec源代码 摘要 在本文中,我们将展示如何利用自然语言处理(NLP)中已知 的方法来检测 HTTP 请求 ...

  9. MD5 or Bcrypt?

    MD5 or Bcrypt? 摘要 首先是一个错误的认识观念问题,很多人觉得MD5是一个加密算法.不然,他实则是一种摘要算法,也可以叫哈希函数.他的作用是将目标文本转换成具有相同长度.不可逆的杂凑字符 ...

  10. DDD落地实践-架构师眼中的餐厅 | 京东云技术团队

    本文以餐厅场景为叙事主线,以领域驱动为核心思想,结合架构设计与功能设计方法论.是从领域分析到落地的全过程案例,内容偏重于落地,因此不乏一些探讨,欢迎指正. 文章较长.全程干货.耐心读完.必有收获. 本 ...