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#高级语法之线程与任务
开发语言·c#
weixin_307779133 小时前
C#实现两个DocumentDB实例之间同步数据
开发语言·数据库·c#·云计算
foundbug9993 小时前
基于C#的OPC DA客户端实现源码解析
开发语言·c#
Crazy Struggle4 小时前
.NET 中如何快速实现 List 集合去重?
c#·.net
xb11325 小时前
C#生产者-消费者模式
开发语言·c#
今晚打老虎z5 小时前
解决SQL Server 安装运行时针对宿主机内存不足2GB的场景
sqlserver·c#
Traced back6 小时前
# C# WinForms 数据库清理系统基础知识与避坑指南
开发语言·数据库·c#
我要打打代码8 小时前
关于C#线程 任务
开发语言·数据库·c#
Traced back9 小时前
# C# 基础语法完全指南
开发语言·c#
大黄说说9 小时前
TensorRTSharp 实战指南:用 C# 驱动 GPU,实现毫秒级 AI 推理
开发语言·人工智能·c#