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

cor*_*ick 7 .net c# wpf brushes

也许我有一个后Ballmer-Peak时刻.我希望有人可以向我指出明显的问题.

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

<Canvas Background="Transparent">
  <Canvas.ContextMenu>
    <ContextMenu>
      <TextBlock>WTF?</TextBlock>
    </ContextMenu>
  </Canvas.ContextMenu>
</Canvas>
Run Code Online (Sandbox Code Playgroud)

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

<Canvas>
  <Canvas.ContextMenu>
    <ContextMenu>
      <TextBlock>WTF?</TextBlock>
    </ContextMenu>
  </Canvas.ContextMenu>
</Canvas>
Run Code Online (Sandbox Code Playgroud)

Joh*_*lla 17

这是因为Transparent画笔允许一个区域可以击打,从而接收并响应鼠标点击,而默认null画笔则没有.换句话说,如果没有定义任何画笔,该区域将变为"空心"并且点击通过; 如果定义了画笔(甚至是透明的画笔),它们就会"稳固"并且可以接收到点击.

有关更多信息,请参阅有关WPF画笔的有用文章.

  • 我收回了之前的WTF声明.这很有道理.+1 (2认同)