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

相关推荐
獨枭3 小时前
C# 本地项目引用失效与恢复全攻略
开发语言·c#·visual studio
清风与日月4 小时前
c# 上位机作为控制端与下位机通信方式
单片机·嵌入式硬件·c#
烛阴5 小时前
从零开始掌握C#核心:变量与数据类型
前端·c#
yue0086 小时前
C# 生成指定位数的编号
开发语言·c#
红黑色的圣西罗7 小时前
C# List.Sort方法总结
开发语言·c#
夏霞10 小时前
c# ASP.NET Core SignalR 客户端配置自动重连次数
c#·.netcore
2501_9307077811 小时前
使用C#代码在 Word 文档中查找并替换文本
开发语言·c#·word
一个帅气昵称啊12 小时前
在.NET中使用RAG检索增强AI基于Qdrant的矢量化数据库
ai·性能优化·c#·.net·rag·qdrant
FuckPatience12 小时前
WPF 使用UserControl / ContentControl显示子界面
wpf