有人知道如何确定右键菜单(ContextMenu
)因过于靠近屏幕边缘而自动调整位置的时间吗?
我的情况是,我有一个右键菜单,有两个圆角和两个直角。当菜单向下打开时,我会把底部两个角变成圆弧,如果菜单向上打开,则将顶部两个角变成圆弧。问题是,我没有找到可以绑定到的事件或属性,告诉我当菜单自动更改方向时。
以下是一些简化的示例代码。如果您在屏幕顶部单击,则菜单向下弹出。如果您将窗口移动到屏幕底部,则菜单将向上弹出。
<Window x:Class="menuRedirection.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="100" Width="200">
<DockPanel Name="panel" ContextMenuOpening="DockPanel_ContextMenuOpening">
<DockPanel.ContextMenu>
<ContextMenu>
<MenuItem Header="item"/>
<MenuItem Header="item"/>
<MenuItem Header="item"/>
<MenuItem Header="item"/>
</ContextMenu>
</DockPanel.ContextMenu>
<Rectangle DockPanel.Dock="Bottom" Name="menuTarget" Fill="Red" Height="10"/>
<TextBlock DockPanel.Dock="Top" Text="right click for context menu"/>
</DockPanel>
</Window>
private void DockPanel_ContextMenuOpening(object sender, ContextMenuEventArgs e)
{
ContextMenuService.SetPlacement(panel, PlacementMode.Bottom);
ContextMenuService.SetPlacementTarget(panel, menuTarget);
}
这是真实应用程序的样子,你可以看到我的问题是需要知道如何调整圆角。