{x:空}与透明?

mob*_*ofu 45 wpf xaml

以下两个有什么区别?

Background="{x:Null}"
Run Code Online (Sandbox Code Playgroud)

Background="Transparent"
Run Code Online (Sandbox Code Playgroud)

HCL*_*HCL 52

Transparent将创建一个初始化为透明颜色的画笔,null将该属性设置为null,这意味着目标属性没有附加画笔.在WPF中,将画笔设置为元素通常很重要.例如,如果要跟踪元素中的鼠标按下,则必须设置背景.如果您不想设置纯色(使其不透明),则可以使用透明刷.这可以使用字符串值"Transparent"来完成.
不同之处在于方式,财产的设定方式.如果为brush-property指定null,则该属性将设置为null.如果设置字符串"Transparent",则将字符串转换为画笔的默认值转换器会将其转换为Brushes.Transparent画笔.

简短版本:{x:Null}将目标属性设置为null."透明"将目标属性设置为透明画笔.

  • 具有透明背景也可能导致控件对点击/其他事件不透明.即你可以通过透明背景看到另一个控件,但点击事件将无法通过.这与空背景形成对比,空背景将使事件通过底层控件. (17认同)

Ken*_*art 22

两者都设置本地值的的Background属性.前者设定它,null而后者设定它Brushes.Transparent.

有几点需要注意:

  • 将值设置为与null完全设置的值不同.由于依赖项属性从多个源获取其有效值,因此设置本地值(即使它是null)可以优先于可能来自其他位置的值,例如样式或动画.
  • 控制命中测试可见性的另一个选项是IsHitTestVisible属性.此属性允许您控制命中测试可见性,无论UIElement渲染的画笔如何.


Mat*_*ský 8

{x:Null}将无法点击Transparent.

也看到这个.


Sno*_*ear 5

Transparent单击背景时,具有背景的元素会接收鼠标单击事件,而具有背景的元素Null则不会。