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

相关推荐
wuguan_13 小时前
C#之线程
开发语言·c#
gc_229915 小时前
学习C#调用OpenXml操作word文档的基本用法(21:学习嵌入对象类)
c#·word·openxml·ole
老骥伏枥~15 小时前
C# if / else 的正确写法与反例
开发语言·c#
老骥伏枥~15 小时前
C# 运算符优先级易踩坑
c#
Poetinthedusk15 小时前
WPF应用跟随桌面切换
开发语言·wpf
SunnyDays101116 小时前
C# 实战:从 Word 文档中提取指定页面
c#·提取word文档页面·将word页面复制到另一个文档
骆驼爱记录16 小时前
Word通配符技巧:高效文档处理指南
开发语言·c#·自动化·word·excel·wps·新人首发
人工智能AI技术16 小时前
智能体元年第一课:使用Microsoft Foundry + AI Toolkit 10分钟构建你的第一个多模态Agent
人工智能·c#
柱子jason16 小时前
基于IOT-Tree Server支持的gRPC服务,使用C#开发自己的设备监控客户端
物联网·rpc·c#·自动化·iiot·iot-tree
骆驼爱记录17 小时前
Word表格题注自动设置全攻略
开发语言·c#·自动化·word·excel·wps·新人首发