有一个有趣的问题,只会影响 Surface Pro 3 上的代码。当为RadRibbonView运行telerik控件然后将其最小化时,弹出窗口将打开到屏幕的最左侧。这种行为不会发生在桌面上,只能在RadRibbonTab下方剪切。在Surface Pro 3上,当View未被最小化时它可以正常工作但是当最小化时它表现得很糟糕。我正在考虑更多地研究可能导致这种情况的原因,并且正在关注Telerik的一些教程:https://docs.telerik.com/devtools/wpf/controls/radribbonview/features/ribbon-controls/ribbon-window-wpf。在我的示例中,XAML显示它正在使用他们的RadRibbonWindow,但Window顶级也将创建此问题。我很可能也会联系Telerik,但是如果Stack Overflow上的任何人看到了这个并知道如何处理它,我很好奇。
<telerik:RadRibbonWindow x:Class="TelerikTesting.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:TelerikTesting"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<telerik:RadRibbonView x:Name="RibbonView" IsMinimizable="True" IsMinimized="True" MinimizeButtonVisibility="Visible"
PopupOpened="RadRibbonView_PopupOpened">
<telerik:RadRibbonView.Items>
<telerik:RadRibbonTab Header="Home">
<telerik:RadRibbonGroup Header="HomeContent" >
</telerik:RadRibbonGroup>
</telerik:RadRibbonTab>
<telerik:RadRibbonTab Header="View" />
</telerik:RadRibbonView.Items>
</telerik:RadRibbonView>
</telerik:RadRibbonWindow>
这不应该发生。
答案 0 :(得分:0)
Telerik发布了一个回复,它本质上是导致问题的平板电脑设备的默认行为。您可以通过直接更改操作系统行为或在构造函数中挂接的代码来修复它。无论哪种方式,它似乎很容易解决Surface Pro 3上的问题,我也猜测其他平板电脑设备。
来自Telerik:
&#39;所描述的行为是由窗口弹出窗口的设置引起的。 Windows操作系统中的弹出窗口基于Handedness设置以不同方向呈现。您可以通过转到Windows设置来验证它:ControlPanel-&gt; Tablet PC设置。如果将惯性设置为&#34;左手&#34;,这是OS的大多数版本中的默认值,则弹出菜单将从其目标元素的右侧到左侧呈现。换句话说,具有RadRibbonView内容的弹出窗口将正确定位。另一方面,&#34;右手&#34;设置将从右到左绘制弹出窗口。
你可以尝试将Handedness改为&#34;左撇子&#34;并看看这是否解决了这个问题。可以尝试的另一种解决方法是使用代码。基本上,您可以更改SystemParameters.MenuDropAlignment属性的值。您可以使用以下方法来实现此目的:
public static void SetAlignment()
{
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;
}
}
&#39;
我只是将代码方法连接到后面代码中的视图构造函数,它工作得很好。