簡體   English   中英

WPF功能區應用程序菜單放置錯誤

[英]WPF ribbon application menu placement wrong

我有一個WPF應用程序,它使用來自Microsoft的System.Windows.Controls.Ribbon程序集的Ribbon控件。 應用程序菜單在我們的大多數計算機上都能正確呈現,但是在Surface Pro上,菜單項的位置不佳。 我想知道為什么Surface Pro表現出不同的行為,以及我可以嘗試其他哪些步驟。

首先,這是一些簡單的XAML,可用於重現該問題(但僅限於Surface Pro):

<RibbonWindow x:Class="RibbonMenuTest.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>
        <Ribbon DockPanel.Dock="Top" UseLayoutRounding="True" Background="#98C1F6" >
            <Ribbon.ApplicationMenu>
                <RibbonApplicationMenu>
                    <RibbonApplicationMenuItem Header="Menu item 1">
                        <RibbonApplicationMenuItem Header="Menu item 1.1" />
                        <RibbonApplicationMenuItem Header="Menu item 1.2" />
                    </RibbonApplicationMenuItem>
                    <RibbonApplicationMenuItem Header="Menu item 2">
                        <RibbonApplicationMenuItem Header="Menu item 2.1" />
                        <RibbonApplicationMenuItem Header="Menu item 2.2" />
                    </RibbonApplicationMenuItem>
                    <RibbonApplicationMenuItem Header="Menu item 3" />
                    <RibbonApplicationMenuItem Header="Menu item 4" />
                </RibbonApplicationMenu>
            </Ribbon.ApplicationMenu>
        </Ribbon>

        <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="Main content area" />
    </DockPanel>
</RibbonWindow>

在我們的Windows 10台式機上,一切都可以正常顯示: 功能區應用程序菜單在桌面上看起來不錯

但是菜單在Surface Pro(也運行Windows 10)上的位置奇怪: 在此處輸入圖片說明

首先,我嘗試通過更改顯示器的DPI設置(100%=> 150%)以匹配Surface,在開發機器上重現該問題。 這行不通; 該應用程序仍然可以正常運行。

接下來,我嘗試使用自定義樣式覆蓋菜單彈出窗口的位置:

<RibbonApplicationMenuItem.Resources>
    <Style TargetType="Popup">
        <Setter Property="Placement" Value="Right" />
    </Style>
</RibbonApplicationMenuItem.Resources>

在Surface上,菜單似乎完全忽略了Placement屬性。 使用相同的樣式,我可以調整Horizo​​ntalOffset和VerticalOffset屬性,但是似乎忽略了我嘗試對PlacementTarget進行的任何更改。 我嘗試將彈出窗口相對於頂級窗口定位,但似乎忽略了我的首選放置目標,並始終使用父菜單項。

有人遇到過這個問題嗎? 並希望知道如何解決它?

這是由於“筆”選項上的慣用性設置。 (有關確切設置,請參見本教程 。)

為了忽略/覆蓋慣用性設置,請檢查以下問題: 帶彈出窗口的WPF慣用性

更新:非平板電腦的方便設置已被移動,請檢查此鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM