Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 上下文菜单位置_C#_Wpf_Contextmenu - Fatal编程技术网

C# 上下文菜单位置

C# 上下文菜单位置,c#,wpf,contextmenu,C#,Wpf,Contextmenu,我有一个上下文菜单,可以通过按热键ctrl+菜单手动显示。因此,我使用此函数: ContextMenu.IsOpen = true; 我在我的主窗口中调用这个。但它有一些奇怪的效果 如果只按菜单键,菜单ALWASY出现在屏幕的中间 如果我手动调用菜单,它总是出现在左上角 我的菜单是: <Window.ContextMenu> <ContextMenu Placement="Center"> <MenuItem IsCheckable="Fa

我有一个上下文菜单,可以通过按热键ctrl+菜单手动显示。因此,我使用此函数:

ContextMenu.IsOpen = true;
我在我的主窗口中调用这个。但它有一些奇怪的效果

如果只按菜单键,菜单ALWASY出现在屏幕的中间
  • 如果我手动调用菜单,它总是出现在左上角
  • 我的菜单是:

    <Window.ContextMenu>
        <ContextMenu Placement="Center">
            <MenuItem IsCheckable="False" Name="item2" Click="MenuItem_Click" Header="{DynamicResource countDownNotificationOn}"/>
        </ContextMenu>
    </Window.ContextMenu>
    

    但是不起作用。

    您需要设置
    上下文菜单的
    PlacementTarget
    属性:

    if (element.ContextMenu != null )
    {
        element.ContextMenu.PlacementTarget = element;
        element.ContextMenu.IsOpen = true;
    }
    

    如果在此之后,
    ContextMenu
    仍未正确放置,则可以使用
    ContextMenu.horizontalpoffset
    ContextMenu.VerticalOffset
    属性设置放置。有关更多信息,请查看MSDN上的和页面。

    谢谢,它很有效。我想如果我把位置放在xaml部分就足够了。我很高兴能帮上忙。如果这个问题有助于你解决问题,请“勾选”这个问题作为正确答案。
    if (element.ContextMenu != null )
    {
        element.ContextMenu.PlacementTarget = element;
        element.ContextMenu.IsOpen = true;
    }