gpt4 book ai didi

wpf - 为什么我的菜单从右向左打开而不是从左向右打开?

转载 作者:行者123 更新时间:2023-12-04 15:09:07 26 4
gpt4 key购买 nike

我来自 WinForms,第一次自学 WPF。
我以为我会首先在 WPF 中重新创建我的 WinForms 应用程序之一的界面,但我已经遇到了菜单问题。

当 WinForms 应用程序上的菜单从左到右打开时(这是我想要的),我无法弄清楚为什么 WPF 应用程序中的菜单从右到左打开:

enter image description here

这是一个几乎空的项目,只有默认设置。这是 XAML:

<Window x:Class="WpfTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Test" Height="541.771" Width="828.947" WindowStartupLocation="CenterScreen">
<DockPanel LastChildFill="False" Margin="0" Background="#FFFDFD9C">
<Menu x:Name="menu" Height="22" VerticalAlignment="Top" RenderTransformOrigin="1.79,0.076" DockPanel.Dock="Top" Margin="0">
<MenuItem Header="File">
<MenuItem Header="New Document"/>
<MenuItem Header="Open Template"/>
<MenuItem Header="Open Collateral"/>
<Separator/>
<MenuItem Header="Synchronise"/>
<Separator/>
<MenuItem Header="Build Document"/>
<MenuItem Header="Document History">
<MenuItem Header="Load Last Document"/>
</MenuItem>
<Separator/>
<MenuItem Header="Settings"/>
<Separator/>
<MenuItem Header="Exit"/>
</MenuItem>
<MenuItem Header="Help">
<MenuItem Header="User Guide"/>
<MenuItem Header="About"/>
</MenuItem>
</Menu>
<Rectangle Fill="#FFB8B8FF" Height="80" VerticalAlignment="Top" DockPanel.Dock="Top" Margin="0"/>
</DockPanel>
</Window>

我错过了什么?

最佳答案

菜单的打开方式取决于 SystemParameters.MenuDropAlignment 属性。如果您有为惯用右手的人配置的平板电脑,这通常设置为向右对齐。

可以在控制面板 -> 平板电脑设置 -> 指定您用哪只手书写来更改计算机的设置。如果您的控制面板中没有 Tablet PC 设置,您可以尝试运行 shell:::{80F3F1D5-FECA-45F3-BC32-752C152E456E} 。这应该会打开 Tablet PC 设置配置对话框(来源:https://stackoverflow.com/a/25109673/3506292)。您还可以创建一个注册表项来更改此设置。

如果绝对需要,您可以使用 thisthat 问题的答案来覆盖此行为。

最简单的更改(来自 https://stackoverflow.com/a/22065976/3506292 )

private static readonly FieldInfo _menuDropAlignmentField;
static MainWindow()
{
_menuDropAlignmentField = typeof(SystemParameters).GetField("_menuDropAlignment", BindingFlags.NonPublic | BindingFlags.Static);
System.Diagnostics.Debug.Assert(_menuDropAlignmentField != null);

EnsureStandardPopupAlignment();
SystemParameters.StaticPropertyChanged += SystemParameters_StaticPropertyChanged;
}

private static void SystemParameters_StaticPropertyChanged(object sender, PropertyChangedEventArgs e)
{
EnsureStandardPopupAlignment();
}

private static void EnsureStandardPopupAlignment()
{
if (SystemParameters.MenuDropAlignment && _menuDropAlignmentField != null)
{
_menuDropAlignmentField.SetValue(null, false);
}
}

关于wpf - 为什么我的菜单从右向左打开而不是从左向右打开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37326546/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com