【问题标题】:Why doesn't this WPF code generate a context menu?为什么此 WPF 代码不生成上下文菜单?
【发布时间】:2010-10-26 16:14:15
【问题描述】:

也许我有一个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>

【问题讨论】:

  • 确实如此。一开始我以为你疯了,但我得到了同样的结果。 WPF 有时也让我感到困惑。希望有一些合理的理由。

标签: c# .net wpf brushes


【解决方案1】:

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

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

【讨论】:

  • 我收回我之前的 WTF 声明。这很有意义。 +1
  • 这真的很高兴知道,实际上。它为什么这样做实际上是有道理的。谢谢
  • 没问题!很高兴能帮上忙。
  • 刚刚了解画布,但这是一个很好的描述。简明扼要。尊敬的好先生!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-09
  • 2018-06-22
  • 1970-01-01
  • 1970-01-01
  • 2012-09-21
相关资源
最近更新 更多