Wpf面板背景问题

vik*_*iky 3 wpf events xaml background panel

当我没有设置我的面板的背景时,我无法获得鼠标事件.为什么会这样?我可以通过将Background设置为Transparent来获取面板上的鼠标事件,默认情况下为null.什么是Background null和Transparent之间的区别?

Ray*_*rns 7

Background=null渲染时它没有向MILCore发出任何绘图命令,并且在命中测试中它不计算控件的整个区域.

何时Background=Transparent,它在渲染时向MILCore发出普通的绘图命令,并且它确实控制了命中测试中的整个区域.

Brushes.Transparent是一个普通的画笔,它的alpha(不透明度)通道设置为零.因此,在大多数情况下,它的作用就像普通的颜色.如果背景是普通颜色,则会检测到鼠标点击,因此也会检测到它们Brushes.Transparent.

也就是说,有一些地方代码检测到Brushes.Transparent并通过完全省略绘图命令来优化它.例如,窗口透明度与操作系统的交互会发生这种情况:操作系统不会被告知绘制的任何区域Brushes.Transparent是应用程序的一部分,因此单击它不会做任何事情.Brushes.Transparent为此目的,这是通过特殊套管完成的.