WPF容器的背景对鼠标事件的影响

背景:在实现鼠标拖动窗口的过程中发现对父容器设置了鼠标拖动窗口的事件MouseLeftButtonDown

cs 复制代码
private void DragWindow(object sender, MouseButtonEventArgs e)
{

    if (e.LeftButton == MouseButtonState.Pressed)
        DragMove();
}

问题:非常困惑的是,竟然有的地方可以被点击拖动,但是有的却不行。

而且只有在设置了Background的这个地方是可以被点击拖动的

搜索了好一会发现确实是Background的问题

  • 当控件(如 Grid)的背景设置为 null(默认情况),它实际上是不可见的,并且不参与命中测试(hit testing)。命中测试是 WPF 用来决定哪个控件应该接收鼠标事件的过程。
  • 如果一个控件不参与命中测试,当您尝试点击该控件时,实际上点击的是位于该控件下面的其他控件或窗口。

因此需要设置了Background了才能命中该容器,如果不需要颜色的可以设置为Transparent

相关推荐
菜到极致就是渣1 小时前
C#中的关键字out和ref的区别
开发语言·c#
坐井观老天2 小时前
使用WPF在C#中制作下载按钮
开发语言·c#·wpf
CodeCraft Studio2 小时前
【实用技能】如何使用 .NET C# 中的 Azure Key Vault 中的 PFX 证书对 PDF 文档进行签名
c#·.net·azure
奔跑的犀牛先生2 小时前
unity学习14:unity里的C#脚本的几个基本生命周期方法, 脚本次序order等
学习·unity·c#
数据的世界014 小时前
C#标识符和关键字
java·服务器·c#
鲤籽鲲6 小时前
C# 整型、浮点型 数值范围原理分析
开发语言·c#
Moweiii10 小时前
Godot最佳实践个人转述
c#·游戏引擎·godot
小禾家的11 小时前
.NET AI 开发人员库 --AI Dev Gallery简单示例--问答机器人
人工智能·c#·.net
AitTech12 小时前
如何轻松反转C# List<T>中的元素顺序
windows·c#·list
军训猫猫头13 小时前
23.行号没有了怎么办 滚动条没有了怎么办 C#例子
开发语言·c#