{x:空}与透明?

时间:2011-03-17 20:15:50

标签: wpf xaml

以下两个之间有什么区别?

Background="{x:Null}"

Background="Transparent"

5 个答案:

答案 0 :(得分:47)

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

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

答案 1 :(得分:21)

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

有几点需要注意:

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

答案 2 :(得分:8)

{x:Null}将无法点击,Transparent将会。

Also see this.

答案 3 :(得分:4)

Transparent背景元素在点击背景时会收到鼠标点击事件,而Null元素则不会。

答案 4 :(得分:0)

Transparent 笔刷

将导致背景的Alpha通道设置为100%透明的 0

{x:Null}

将导致WPF将背景设置为默认控件颜色,对于某些属性,例如DataGrid.RowBackground Transparent < / em>其他大多数属性。

  

指定画笔颜色是一个好习惯,因为将画笔设置为    Null 可能会导致不希望的默认颜色。