Почему этот код WPF не создает контекстное меню?

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

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

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

Решение

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

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

Другие вопросы по тегам