2011-03-17 57 views
37

以下两者有什么区别?{x:Null}与透明?

Background="{x:Null}" 

Background="Transparent" 
+1

就像设置一个字符串'null' vs'string.Empty'。 'null'不会初始化它。 'String.Empty'会初始化它,但不会放任何东西。相同的画笔。 'x:null'表示'null','Transparent'表示初始化时没有颜色,当然作为其他指出的点击功能。 – 2016-10-06 04:37:08

回答

42

Transparent将创建被初始化为透明色的刷子,将空的属性设置为空值,则这意味着目标属性具有不附着的刷子。 在WPF中,将画刷设置为元素通常很重要。例如,如果您想要跟踪元素中的鼠标降落,则必须设置背景。如果您不想设置纯色(使其不透明),则可以使用透明画笔。这可以通过字符串值“透明”来完成。
区别在于方式,财产将如何设置。如果为brush-property分配null,则该属性将被设置为null。如果将字符串设置为“Transparent”,则将字符串转换为画笔的默认value-converter会将其转换为Brushes.Transparent画笔。

简短版本{x:Null}将destination属性设置为null。 “透明”将目标属性设置为透明画笔。

+14

透明背景也可能导致控件不透明以点击/其他事件。即您可以通过透明背景看到另一个控件,但点击事件不会完成。这与空背景形成鲜明对比,后者将让事件进入基础控件。 – 2011-03-17 20:20:22

+0

@Kent +1不知道。什么是在000000和FFFFFF之间的值? – 2011-03-17 22:20:08

8

{x:Null}不会被点击,Transparent会。在后台,当点击

Transparent背景

Also see this.

4

元件接收鼠标点击事件,Null要素没有。

21

两者都设置本地值Background属性。前者将其设置为null,后者将其设置为Brushes.Transparent

有几个重要的点要注意的:

  • 值设置为null一样不设置它。由于依赖项属性获取其有效值from multiple sources,因此设置本地值(即使它的值为null)可能优先于可能来自其他位置的值(如样式或动画)。
  • 控制命中测试可见性的另一个选项是IsHitTestVisible属性。无论呈现UIElement的画笔如何,此属性都允许您控制命中测试的可见性。
+0

'#00000000'有趣的笔记。黑色和白色之间的值如何?将#'00AAAAAA'命中测试可见。而且这种差异又有什么意义,我确实认为它有任何意义。 – Snowbear 2011-03-17 20:51:15

+0

+1增加#00000000 – HCL 2011-03-17 20:51:50

+0

+1。我认为这个答案应该被接受! – Nawaz 2011-03-22 17:48:53