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>,而是自定义窗口类名(若自定义窗口与继承者不在同一个命名 ...
随机推荐
- 一篇文章带你了解Python常用自动化测试框架——Pytest
一篇文章带你了解Python常用自动化测试框架--Pytest 在之前的文章里我们已经学习了Python自带测试框架UnitTest,但是UnitTest具有一定的局限性 这篇文章里我们来学习第三方框 ...
- 怎样阅读 h2 数据库源码
阅读 h2 数据库的源码是一项复杂的任务,需要对数据库原理.Java 语言和操作系统有深入的理解.可以从以下几方面入手来完成. 环境准备 首先,你需要在你的机器上安装和配置好开发环境,包括 JDK.M ...
- JavaScript高级程序设计笔记06 集合引用类型
集合引用类型 1. Object(详见c08 p205) 适合存储,在应用程序间交换数据 创建实例: a. 显式构造函数 b. 字面量-->不会调用构造函数(代码更少.更有封装感) 函数:大量参 ...
- 【学到一个新名词】String interning(字符串驻留/字符串内部化)
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 在阅读 VictoriaMetrics v1.95.1 的 ...
- 2020-2021 “Orz Panda” Cup Programming Contest G题(树形结构)
题目传送门 题目大意:给点一颗包含 \(n\)个节点的无根树,有 \(m\)次询问,每次询问给出两个点 \(u\)和 \(v\),要求计算 \[\sum_{r=1}^{n}d_{r}(u,v) \] ...
- 通过.NET Core+Vue3 实现SignalR即时通讯功能
.NET Core 和 Vue3 结合使用 SignalR 可以实现强大的实时通讯功能,允许实时双向通信.在这个示例中,我们将详细说明如何创建一个简单的聊天应用程序,演示如何使用 .NET Core ...
- MongoDB是一个NoSQL数据库,有着多种不同的命令和操作。以下是一些常见的MongoDB命令:
show dbs:列出所有数据库 use db_name:切换到指定的数据库 db.dropDatabase():删除当前数据库 db.createCollection("collectio ...
- C++ Qt开发:TabWidget实现多窗体功能
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍TabWidg ...
- 自定义开发odoo14的统计在线用户人数
在 Odoo 14 中统计在线人数通常涉及到定制开发或者使用特定的模块. 自定义开发:如果没有现成的模块,您可能需要进行一些自定义开发.这通常涉及到扩展Odoo的用户模型,以跟踪用户的登录和登出活动. ...
- reboot详解
linux下reboot命令详解 linux reboot 命令详解 功能说明:重新开机. 语 法:dreboot [-dfinw] 补充说明:执行reboot指令可让系统停止运作,并重新开机. 参 ...