Dot-Net

如何告訴 ContextMenu 相對於它的控制項而不是游標放置自己?[複製]

  • April 25, 2011

我有一個帶有預設命令的按鈕和一個用於其他可用命令的上下文菜單:

<Button Content="Do this" Height="23" Width="75" Command="local:MyCommands.ThisCommand">
   <Button.ContextMenu>
       <ContextMenu>
           <MenuItem Header="Do this" Command="local:MyCommands.ThisCommand" />
           <MenuItem Header="Do that" Command="local:MyCommands.ThatCommand" />
       </ContextMenu>
   </Button.ContextMenu>
</Button>

預設情況下,上下文菜單從游標的熱點開始出現:

但是,我希望它出現在按鈕下方的固定相對位置(假的,已編輯的螢幕截圖):

設置上下文菜單的Placement,PlacementRectanglePlacementTargetproperties 似乎沒有任何作用;無論我右鍵點擊我的按鈕,上下文菜單都堅持將游標懸空。更糟糕的是,聚焦按鈕並點擊菜單鍵會導致上下文菜單位於按鈕的前面,從而完全阻止它。

那麼,我究竟如何指定上下文菜單應出現在按鈕下方?

查看ContextMenu.Placement下的備註

試試這個

<Button Content="Do this" Height="23" Width="75" 
    ContextMenuService.Placement="Bottom"
    Command="local:MyCommands.ThisCommand">
   <Button.ContextMenu>
       <ContextMenu>
           <MenuItem Header="Do this" Command="local:MyCommands.ThisCommand" />
           <MenuItem Header="Do that" Command="local:MyCommands.ThatCommand" />
       </ContextMenu>
   </Button.ContextMenu>
</Button>

引用自:https://stackoverflow.com/questions/5774442