WPF Windows 设置无边框还能拖动,缩放

2023-11-04

1、窗体的介绍

标准窗口由两个重叠矩形组成。

外部矩形是非工作区, 通常称为chrome。 它由操作系统的窗口管理器进行绘制和管理。

窗口的非工作区是通过 WPF 实现的,其中包括大多数窗口所共有的窗口部分,包括以下各项:

  • 边框。

  • 标题栏。

  • 图标。

  • “最小化”、“最大化”和“还原”按钮。

  • “关闭”按钮。

  • “系统”菜单,其中包含允许用户最小化、最大化、还原、移动和关闭窗口以及重设窗口大小的菜单项。

内部矩形是工作区。 它包含应用程序的内容,例如菜单栏、工具栏和控件, 由应用程序进行绘制和管理。

 

 

 

2、自定义窗口

可以通过将Window.WindowStyle属性设置为None或, 使用WindowChrome类自定义窗口边框。

WindowStyle.None

自定义 WPF 应用程序窗口外观的一种方法是将Window.WindowStyle属性设置为。 None 这将从窗口中删除非客户端框架并仅离开工作区, 您可以将自定义样式应用到该区域。 但是, 在删除非客户端框架时, 还会丢失系统功能和所提供的行为, 例如标题按钮和窗口大小调整。 另一个副作用是窗口在最大化时将覆盖 Windows 任务栏。 通过WindowStyle.None设置, 你可以创建完全自定义的应用程序, 但也需要在应用程序中实现自定义逻辑来模拟标准窗口行为。

WindowChrome

若要在保留其标准功能的同时自定义窗口, 可以WindowChrome使用类。 WindowChrome类将窗口框架的功能与视觉对象隔开, 并使你能够控制应用程序窗口的工作区和非工作区之间的边界。 通过WindowChrome使用类, 您可以通过扩展工作区以覆盖非工作区来将 WPF 内容置于窗口框架中。 同时, 它将保留系统行为:比如调整边框标题区的大小。

参考:

https://blog.csdn.net/qq_19764639/article/details/96125324

https://docs.microsoft.com/zh-cn/dotnet/api/system.windows.shell.windowchrome?redirectedfrom=MSDN&view=netframework-4.5#%E5%AE%9A%E4%B9%89

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WPF Windows 设置无边框还能拖动,缩放 的相关文章

  • WPF 从主线程以外的其他线程截屏

    我有一个线程用于侦听 WPF 应用程序的命令 如果 WPF 应用程序收到截取屏幕截图的命令 则任务将移交给 screenshotService 我在互联网上的某个地方找到了一些代码来截取屏幕截图 似乎可以工作 但我还没有想清楚 我无法从另一
  • ComboBox.SourceUpdated 事件未触发

    我的视图中有两个组合框 它们都绑定到两个不同的ObservableCollections在 ViewModel 中 当 ComboBox1 中的选定项发生更改时 ComboBox2 将使用不同的集合进行更新 绑定工作得很好 但是 我希望第二
  • 命令绑定到 ContextMenu(在 ListBox 中的 ListBoxItem 上)不起作用[重复]

    这个问题在这里已经有答案了 在 WPF 中 借助 MVVM 光 有一个Class 由一些学生组成 以及Class持有一些Students 右键单击一个学生的名字 然后会显示一个MessageBox 这样就可以了 类详细信息视图 xaml
  • 隐藏继承的成员

    我正在寻找某种方法来有效隐藏继承的成员 我有一个继承自公共基类的类库 一些较新的后代类继承了依赖属性 这些属性已变得残存 并且在使用时可能会有点混乱智能感知或使用视觉设计器中的类 这些类都是为 WPF 或 Silverlight 2 0 编
  • 以编程方式获取 DataGridColumnHeader ContextMenu

    我在 View cs 中有这段代码 var contextMenu this dataGridFacade GiveContextMenuForDataGrid this DataGridAllJobs this DataGridAllJo
  • 当 ValidationRules 无法共享时,在 DataTemplates 中重新使用绑定实例

    我正在寻找解决方案和 或为什么在 DataTemplate 中共享 Binding 实例背后的合理性 这最终归结为这样一个事实 在 DataTemplate 中 似乎没有办法为生成的每个控件强制在 DependencyProperty 上绑
  • 控制台项目中的 WPF 窗口?

    我最近启动了一个 C 项目 VS 2008 作为 控制台 项目 我在其中编写了一些库 测试程序等 现在我想添加几个 WPF 窗口 但看起来控制台项目不会让我这样做 我来自 Java 所以这有点奇怪 如何添加 WPF 表单 我将从 主 类中实
  • 当列表失去焦点时,WPF SelectedItem 颜色消失

    我有一个WPFWindow其中基本上有一个ListBox显示项目列表 然后我有一个ListView基本上显示的详细信息SelectedItem in the ListBox 问题是 当焦点不在ListBox突出显示的颜色消失了 我无法再看到
  • 为什么有时Task明显慢于Thread?

    我正在使用 MVVM 模式制作 WPF 应用程序 我发现有时任务明显慢于线程 例如 在测试 ViewModel 中 public void DoSomething Stopwatch stopwatch Stopwatch StartNew
  • WPF 中可选择的 TextBlock 或带有格式化文本的 TextBox

    我遇到一种情况 我需要显示格式化文本 正常 粗体 突出显示 并且还应该是可选择的 以便用户可以复制文本 我使用了文本块 我可以使用内联内容流元素应用多种格式 但不幸的是它的文本不可选择 虽然文本框允许选择文本并复制到剪贴板 但它不允许我设置
  • 有没有办法对 RichTextBox 的撤消历史进行分组或暂时禁用它?

    我目前正在研究 WPF 中 RichTextBox 内的表格 在 WPF 中 表格没有行和列 只有行 每行都有一定数量的单元格 当用户按下 添加列 按钮时 我的程序会向每一行添加一个新单元格 使用此方法的问题是 在用户添加一列后 如果他们按
  • 在单个 WPF 控件中列出所有 Validation.Error?

    我试图找到一种简单的方法来绑定单个控件 例如 TextBlock 或 ListBox 以列出 WPF 表单上的所有验证错误 我能找到的大多数源代码示例只是将一个控件绑定到 Validation Errors 0 ErrorContent 它
  • 在代码后面绑定属性

    我有 WPF 应用程序和其中的一个窗口 让我们在我的 xml 中添加这样的内容
  • 如何防止新的 WPF 表单窃取焦点?

    我写了一个简单的MSN http en wikipedia org wiki MSN 风格的程序将使用发送和检索消息WCF http en wikipedia org wiki Windows Communication Foundatio
  • 隐形打开的弹出窗口

    第二天就解决这个问题 要重现 请创建新的 WPF 应用程序 xaml
  • 读取WPF应用程序的程序集版本信息

    我正在阅读我的 wpf 应用程序的版本信息 但我没有得到我所写的正确版本AssemblyInfo cs文件 我的文件中有 assembly AssemblyVersion 0 1 001 assembly AssemblyFileVersi
  • 可编辑的 WPF 列表框

    我有一个绑定到 WPF 中的 ListBox 的 ObservableCollection 我希望列表框可编辑 并将编辑更改保存到集合中 由于 WPF 不提供可编辑的列表框 因此我尝试通过更改 ListBox ItemTemplate 创建
  • 如何在运行时更改元素样式?

    我有一个元素和多种样式 如何在运行时以编程方式或通过 XAML 绑定在样式之间切换
  • WPF (MVVM) 菜单中的互斥(且可绑定)复选框

    我试图找到一个在 WPF MVVM 应用程序的菜单中使用复选框的示例 该应用程序可以绑定到底层 ViewModel 类中的枚举 我有一个简单的例子 public class MyViewModel public MyViewModel co
  • 如何使WPF TreeView风格成为WinForms TreeView?

    WPF 默认的 TreeView 非常好 我仍然希望它有连接每个子元素的线 就像 Windows 窗体 TreeView 一样 我在网上搜索了一些例子 但设计得不够好 我怎样才能用WPF实现它 让我回答我自己的问题 Code 您需要做的只是

随机推荐

  • 【C语言】中,输入一个数组,用for循环实现将输入的n个数字按照从大到小的顺序输出。【通俗简单易懂】

    本篇文章中 我们将讲述在C语言中 输入一个数组 如何用for循环实现将输入的n个数字按照从大到小输出 一 定义数组并初始化 首先 我们定义一个整形的数组并将其初始化 输入n 来决定数组中整数的个数 然后用for循环来输入这个数组中的各个数字
  • mysql用存储过程通过传入的参数id更新字段数据,结果更新了表中所有该字段的数据

    近日一个业务 需要用存储过程实现 其中有一句只是简单的通过id更新字段的语句 但是调用存储过程中发现 会更新表格所有数据 如下图 图一 表中现有数据 需要更新的字段是红框里的 图二 存储过程截图如下 红框里的更新语句 调用存储过程 如图三
  • 二十. Kubernetes 存储挂载

    目录 一 存储挂载 volumes卷的分类 1 EmptyDir 示例 2 hostPath 示例 3 HostDir 示例 4 NFS 网络数据卷示例 持久化卷 二 持久化存储的 PV PVC StorageClass PV 的创建与使用
  • fswebcam一次拍摄多张图片(存在问题)

    初衷 由于树莓派上使用python v4l2capture有问题 因此想了个中间办法 使用fswebcam一次连续拍摄多张图片 fswebcam no banner d dev video0 r 1920x1080 F 15 save 1
  • 一文汇总开源大语言模型,人人都可以拥有自己的ChatGPT

    前言 OpenAI发布的ChatGPT火爆全球以来 全球互联网大厂陆续跟进 纷纷宣布了自家的Chat产品 如Google的Bard 百度的文心一言 阿里的通义千问等等 这些Chat产品背后都是依赖的大语言模型 Large Language
  • keepalive+haproxy实现高可用

    目录 一 搭建环境 1 基本环境 二 修改配置文件 1 建立haproxy配置文件 2 修改haproxy配置文件 3 修改keeplive配置文件 三 启动服务验证 1 HAproxy虚拟机启动haproxy服务和keepalived服务
  • 守护进程的编程规则

    要理解守护进程的编程规则必须先搞明白进程组 会话 组长进程等关系 1 进程组 每个进程除了有一个进程ID之外 还属于一个进程组 进程组是一个或者多个进程的集合 每个进程组都有一个组长进程 组长进程的标识是 其进程ID和进程组ID相等 2 会
  • 基于粒子群算法优化的DBN深度置信网络数据预测及其Matlab实现

    基于粒子群算法优化的DBN深度置信网络数据预测及其Matlab实现 深度置信网络 Deep Belief Network DBN 是一类具有多层结构的前向神经网络 它由多个受限制玻尔兹曼机 Restricted Boltzmann Mach
  • UART串口Shell软硬件模型分析总结

    文章目录 层次一 最底层逻辑配置交互 如何从Uart硬件读写单个字节数据 层次二 抽象串口软件模块交互 基于串口对接输入输出流 和 Printf适配 层次三 类似Shell封装抽象交互 基于串口交互命令行界面 命令解析 补全 修改 记录 c
  • df -h 详解和centos 磁盘清理 /dev/vda1系统盘满了

    df h 检查一台服务器磁盘使用空间 发现磁盘已经使用了100 思路是 1 cd usr 当然这里不一定是 usr目录 最好是cd到 根目录再执行下一步 2 du sh 看哪个目录占用空间大 3 重复前两步 根据实际情况删除或者移走 4 日
  • QT 之键盘事件( keyPressEvent)

    一 介绍 keyPressEvent是QWidget里面的函数 所以凡是继承自QWidget的类都可以通过实现这个函数来完成对按键事件的响应 要让当前的widget能够响应按键事件 最先需要做的事情是 调用 setFocusPolicy Q
  • Vue3动画路由转场

  • PWA及小程序在系统生态方面的支持对比

    PWA代表 渐进式网络应用 Progressive Web Application 它是一种结合了网页和移动应用程序功能的技术概念 PWA旨在提供类似于原生应用程序的用户体验 包括离线访问 推送通知 后台同步等功能 同时又具有网页的优势 如
  • JS new操作符具体做了什么?

    1 意义 在JavaScript中 new 操作符用于创建一个新的对象实例 具体来说 new 操作符会执行以下步骤 JavaScript中的new操作符是一个非常重要的操作符 它用于创建一个新的对象实例 2 实例化步骤 创建一个新的空对象
  • ctfweb入门(13-14)

    ctf show web13 进入题目是个文件上传的题目 尝试了一番文件上传漏洞利用的方法后 没有啥突破 可能有啥隐藏的目录 尝试源码泄露利用的方法 在输入upload php bak时成功下载下来源码 bak文件是备份文件 这里列举一下常
  • 华为机试HJ15 求int型正整数在内存中存储时1的个数

    HJ15 求int型正整数在内存中存储时1的个数 Python 题目 解题思路 代码 结果 代码优化 题目 解题思路 1 输入转整数 用Python的bin方法转为二进制 再按字符串逐个检查等于1 的个数 优化 代码 res 0 for c
  • Ubuntu各个版本下载和安装

    一 下载方式 推荐使用网易镜像站下载 官网下载速度太慢 在官网下载ubuntu 网址 https ubuntu com download desktop 在网易镜像站下载ubuntu 网址 http mirrors 163 com ubun
  • lambda表达式提示变量错误:Variable used in lambda expression should be final or effectively final

    今天在使用lambda表达式时 遇到一个问题 Variable used in lambda expression should be final or effectively final 代码如下 ClassName CyclicBarr
  • 关于Sensor和ISP,对输出图像做Crop和Downscale的注意事项

    01 背景 客户要求调试ov的一款分辨率为4608x2592的Sensor 但目前我司的Soc最大支持分辨率是4096x3456 所以目前能出的最大分辨率为4096x2592 11M 客户要求ISP要出两路视频流 11M 1080P 且不能
  • WPF Windows 设置无边框还能拖动,缩放

    1 窗体的介绍 标准窗口由两个重叠矩形组成 外部矩形是非工作区 通常称为chrome 它由操作系统的窗口管理器进行绘制和管理 窗口的非工作区是通过 WPF 实现的 其中包括大多数窗口所共有的窗口部分 包括以下各项 边框 标题栏 图标 最小化