为什么这个WPF代码不生成上下文菜单?

时间:2009-05-16 03:27:13

标签: c# .net wpf brushes

也许我有Post-Ballmer-Peak Moment。 我希望有人可以帮我指出那些显而易见的事情。

为什么此代码会在右键单击时生成上下文菜单:

<Canvas Background="Transparent">
  <Canvas.ContextMenu>
    <ContextMenu>
      <TextBlock>WTF?</TextBlock>
    </ContextMenu>
  </Canvas.ContextMenu>
</Canvas>

此代码不会生成上下文菜单:

<Canvas>
  <Canvas.ContextMenu>
    <ContextMenu>
      <TextBlock>WTF?</TextBlock>
    </ContextMenu>
  </Canvas.ContextMenu>
</Canvas>

1 个答案:

答案 0 :(得分:17)

这是因为Transparent画笔允许一个区域可以被击中,从而接收并响应鼠标点击,而默认的null画笔则没有。换句话说,如果没有定义任何画笔,该区域将变为“空心”并且点击通过;使用画笔定义(甚至是透明画笔),它们是“可靠的”并且可以接收点击。

有关详情,请参阅 WPF brushes 上的这篇有用的文章。