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

相关推荐
qq_454245032 小时前
BuildTemplateGraph 函数深度解析:动态节点图构建的架构设计与核心价值
数据结构·c#
qq_454245033 小时前
SkeletonFlow:基于组合子逻辑与范畴论的数据流处理框架
数据结构·c#
游乐码3 小时前
c#静态类和静态构造函数
开发语言·c#
net3m335 小时前
自动分工 现象时,一共有几种可能得权重组合变化,如何确保这些组合的扫描时的不发生组合爆炸
人工智能·c#·ai编程
bugcome_com5 小时前
C# 方法详解:定义、调用与参数传递
c#
光泽雨6 小时前
AppDomain
c#
bugcome_com6 小时前
C# 可空类型(Nullable)详解
c#
大Mod_abfun8 小时前
Socket网络通信教程1(文件传输,IPv4+v6,多客户端管理,重构?)
服务器·网络·c#·socket·vb.net·文件传输
czhc11400756639 小时前
ModBus 218
c#
Never_Satisfied21 小时前
在c#中,使用windows自带功能将文件夹打包为ZIP
开发语言·windows·c#