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

相关推荐
mudtools2 小时前
搭建一套.net下能落地的飞书考勤系统
后端·c#·.net
玩泥巴的12 小时前
搭建一套.net下能落地的飞书考勤系统
c#·.net·二次开发·飞书
唐宋元明清218814 小时前
.NET 本地Db数据库-技术方案选型
windows·c#
lindexi16 小时前
dotnet DirectX 通过可等待交换链降低输入渲染延迟
c#·directx·d2d·direct2d·vortice
qq_4542450318 小时前
基于组件与行为的树状节点系统
数据结构·c#
bugcome_com19 小时前
C# 类的基础与进阶概念详解
c#
雪人不是菜鸡19 小时前
简单工厂模式
开发语言·算法·c#
铸人19 小时前
大数分解的Shor算法-C#
开发语言·算法·c#
未来之窗软件服务20 小时前
AI人工智能(二十四)错误示范ASR张量错误C#—东方仙盟练气期
开发语言·人工智能·c#·仙盟创梦ide·东方仙盟
yong999020 小时前
基于C#实现的UPnP端口映射程序
开发语言·c#