c# - 为什么此 WPF 代码不生成上下文菜单?

标签 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>

最佳答案

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

WPF brushes 上查看这篇有用的文章了解更多信息。

关于c# - 为什么此 WPF 代码不生成上下文菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/871617/

相关文章:

c# - CodeRush中自动添加 `using`

c# - 为什么不能在循环中向数组添加项目?

.net - 无效 C++/CLI 的 ISO C++ 代码示例

c# - SetWindowPlacement 不会正确放置 WPF 工具窗口

c# - WPF Datagrid 不显示文本

c# - 如何从应返回整数的函数中返回 null

c# - SQL - 将 NULL 插入 DateTime

.net - WPF GridSplitter 使用 MinWidth 调整大小

c# - 如何检查 secret 是否在 Azure Key Vault 中

.net - 使用类型和格式字符串将字符串转换为对象