WPF菜单未正常定位。

3
我一直很愉快地编写我的新程序,它运行得非常好。一开始它很简单,不需要菜单,但后来我决定增加更多功能,所以需要一个菜单。噼啪!下面的图片更好地解释了我的问题。

image

注意到文件菜单对齐了吗?图片中的应用程序只是一个测试应用程序,只是为了查看我是否添加了其他应用程序中可能导致问题的内容。即使项目是全新的,它仍然会出现。我不明白为什么会发生这种情况。有人经历过这种情况吗?带有设置命令的MenuItems也因某种原因被禁用。未设置的MenuItems则没有。您可以看到上面显示的“退出”MenuItem已被禁用。在下面的代码中,它设置为“ApplicationCommands.Close”。
顺便说一句,我使用的是Windows 7 x64,并使用Visual Studio 2010编写WPF应用程序。非常感谢您的帮助!提前致谢!
<Window x:Class="TestDrive.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">
    <Grid>
        <Menu Height="23" HorizontalAlignment="Left" Name="menu1" VerticalAlignment="Top" Width="200">
            <MenuItem Header="File">
                <MenuItem Command="ApplicationCommands.Close" Header="Exit" />
            </MenuItem>
            <MenuItem Header="Edit" />
        </Menu>
    </Grid>
</Window>

抱歉,我没有注意到我还不能发布图片。这段代码非常基础。由于这是一个新项目,我只添加了菜单,除此之外并没有做太多的工作来测试问题。 - DeVilFisCh
代码在这里运行得很好,菜单显示正确。但是我将File MenuItem的FlowDirection更改为RightToLeft后,它就像你的一样出现了,但文本是右对齐的...也许这是一个系统/语言设置的问题? - Tom
可能是一些驱动程序问题吗?或者是我的.NET安装出了问题。我正在下载新的笔记本电脑驱动程序,并将在另一台计算机上尝试我的应用程序(虽然仍在等待.NET 4的安装完成)。我尝试在网络上搜索类似的问题,但没有找到任何经历过相同问题的人。 - DeVilFisCh
@Tom:那是我猜测之一。我也尝试了切换,确实有变化,但即使反过来,仍然是错误的。我当前在这台电脑上安装的语言是英语和日语。两种语言都以从左到右为标准,这让人感到相当困惑。如果我安装了阿拉伯语,情况可能会不同。 - DeVilFisCh
@Rick:模拟器的下拉菜单被禁用了。我正在开发一个使用WPF作为用户界面的Windows应用程序。 - DeVilFisCh
显示剩余3条评论
2个回答

1
关于导致菜单项禁用的命令,如果没有相应的命令绑定,那是可以预料的。至于对齐问题,您尝试过在 XAML 中不设置显式大小吗?例如:
<Window x:Class="TestDrive.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow">
    <DockPanel>
        <Menu DockPanel.Dock="Top">
            <MenuItem Header="File">
                <MenuItem Command="ApplicationCommands.Close" Header="Exit" />
            </MenuItem>
            <MenuItem Header="Edit" />
        </Menu>
    </DockPanel>
</Window>

感谢您的回答。不幸的是,我尝试了上面的完全相同的代码,结果还是一样。我开始觉得可能是我的电脑出了问题。也许是驱动程序或某些软件导致.Net出现故障。即使如此,我也不会放弃。我想尝试在另一台电脑上运行我的应用程序,但由于某种原因,.Net会出现访问被拒绝的错误。如果它在那里运行良好,则问题是本地问题。我只希望我可以找到它,而无需卸载一切。 - DeVilFisCh

1
我知道这是一篇旧文章,但问题与我几周前遇到的问题类似,我通过以下方法解决了它。
Windows有一个触摸/平板电脑设置,您可以填写左手还是右手。这确定上下文菜单的定位,以确保在触摸屏设备的情况下,您的手不会覆盖菜单,从而导致问题。
转到控制面板-->硬件和声音-->平板电脑。在称为“其他”的第三个选项卡中选择左手。这将使菜单位于菜单按钮的另一侧。
编辑
看来DevilFisch和我都在使用Wacom笔记本电脑,这可能是此问题的原因。使用pentablet或类似物品时,会触发平板电脑设置,从而引起上述问题。

我已经有一段时间没有回顾我的过去的问题了,所以我没有注意到你写了一个答案。我只是回到这里更新我的答案,以反映你说的话,这是我一段时间前独立发现的。我很惊讶有人已经超越了我!哈哈!无论如何,当我今天在我的电脑和平板电脑上再次注意到这个问题时,我意识到了这一点。我在我的电脑上使用Wacom笔,而平板电脑显然有一个触摸屏。这些硬件附件可能导致平板电脑的设置相应地改变。我将删除我的旧答案并切换到你的答案。 - DeVilFisCh
啊,这也回答了我的问题,为什么在我的电脑上也出现了这个问题。我也使用 Wacom 平板(Intuos 5 touch)。可能是那改变了设置。 - user3049467
1
看起来我们找到了真正的“罪魁祸首”。 :) - DeVilFisCh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接