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

相关推荐
田井中律.2 小时前
知识图谱(关系抽取方法)【第十章】
人工智能·c#·知识图谱
周杰伦fans4 小时前
C# CAD二次开发:RotatedDimension 文字边框设置完全指南
开发语言·c#
SEO-狼术7 小时前
Easily Reorder Rows in WPF Grids
wpf
新缸中之脑8 小时前
用Claude for Word审查法律合同
开发语言·c#·word
xuxie998 小时前
N27 数据库UI
linux·c#
唐青枫8 小时前
C#.NET TaskCompletionSource 深入解析:手动控制 Task、桥接回调事件与实战避坑
c#·.net
张人玉8 小时前
VisionPro 药物检测工具 学习笔记
算法·c#·机器视觉·vsionpro
周杰伦fans9 小时前
C# CAD二次开发:RotatedDimension 旋转标注完全指南
开发语言·c#
宝桥南山9 小时前
Azure - 尝试一下使用Azure Developer CLI去部署应用程序
microsoft·ai·微软·c#·aigc·azure
OctShop大型商城源码10 小时前
C#.NET多商户商城系统源码_OctShop:技术与机遇的融合
c#·.net·多商户商城系统源码·商城系统源码