Почему этот код WPF не создает контекстное меню? - PullRequest
7 голосов
/ 16 мая 2009

Возможно, у меня Момент после пика Баллмера . Я надеюсь, что кто-то может помочь указать на очевидное для меня.

Почему этот код генерирует контекстное меню при щелчке правой кнопкой мыши:

<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 Ответ

17 голосов
/ 16 мая 2009

Это связано с тем, что кисть Transparent позволяет создавать область, на которую можно нажимать, и таким образом получать и реагировать на щелчки мыши, тогда как кисть null по умолчанию этого не делает. Другими словами, без какой-либо определенной кисти область становится «полой», и щелчки проходят; с определенной кистью (даже прозрачной) они «сплошные» и могут быть получены щелчки.

См. Эту полезную статью о кистях WPF для получения дополнительной информации.

...