WPF Menu displays to the left of the window

2019-02-17 17:56发布

问题:

I have a simple Menu in a DockPanel. Here is the XAML:

<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
<DockPanel>
    <Menu DockPanel.Dock="Top">
        <MenuItem Name="file" Header="_File">
            <MenuItem Name="exitMenuItem" Header="E_xit"/>
        </MenuItem>
    </Menu>
    <Grid>
    </Grid>
</DockPanel>

Why does the Menu drop down to the left instead of the right of the window border like most applications?

回答1:

It appears that you have a tablet input device. Follow the instructions in this link to change the handedness in your Tablet PC Settings:

  • menus appear to the left of my cursor


回答2:

A fix that worked for me was:

        var ifLeft = SystemParameters.MenuDropAlignment;
        if (ifLeft)
        {
            // change to false
            var t = typeof(SystemParameters);
            var field = t.GetField("_menuDropAlignment", BindingFlags.NonPublic | BindingFlags.Static);
            field.SetValue(null, false);
            ifLeft = SystemParameters.MenuDropAlignment;
        }

Credit: https://www.telerik.com/forums/popup-is-opening-to-outside-window-in-splitbutton



标签: wpf xaml menu