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

相关推荐
阿蒙Amon14 分钟前
C#每日面试题-属性和特性的区别
java·面试·c#
要记得喝水38 分钟前
某公司C#-WPF面试题-来自nowcoder(含答案和解析)--2
c#·wpf
Joker 0072 小时前
Linux nohup命令实战指南
linux·运维·wpf
爱敲点代码的小哥4 小时前
类型转换 递归算法 编译错误 装箱和拆箱 知识点
开发语言·c#
时光追逐者5 小时前
一个 WPF 开源、免费的 SVG 图像查看控件
开源·c#·.net·wpf
江沉晚呤时5 小时前
构建智能代理的利器:深入解析 Microsoft Agent Framework
开发语言·c#
武藤一雄6 小时前
C# 中线程安全都有哪些
后端·安全·微软·c#·.net·.netcore·线程
wuguan_6 小时前
C#递推算法
算法·c#·递推算法
de之梦-御风7 小时前
【WebAPI 模拟器】.NET 8/9 + Minimal API + Swagger + DI + WPF Host
.net·wpf·web
nnsix7 小时前
【C#】HttpPost请求 - Query参数 - URL编码方法
java·javascript·c#