2017-10-24 2 views
0

Ein interessantes Problem, das nur den Code auf einem Surface Pro 3 betrifft. Wenn Sie ein Telerik-Steuerelement für eine RadRibbonView ausführen und es dann minimieren, wird das Popup ganz links auf dem Bildschirm geöffnet. Dieses Verhalten tritt nicht auf einem Desktop auf und funktioniert nur unter dem RadRibbonTab. Auf einem Surface Pro 3 funktioniert es gut, wenn die Ansicht nicht minimiert ist, aber wenn sie minimiert ist, verhält sie sich schlecht. Ich dachte darüber nach, mehr darüber zu untersuchen, was das verursachen könnte und folgte einigen Tutorials auf Telerik: https://docs.telerik.com/devtools/wpf/controls/radribbonview/features/ribbon-controls/ribbon-window-wpf. In meinem Beispiel zeigt XAML, dass es ihr RadRibbonWindow verwendet, aber eine Window Top-Ebene wird dieses Problem ebenfalls verursachen. Ich werde höchstwahrscheinlich Telerik kontaktieren, war aber neugierig, ob jemand auf Stack Overflow dies gesehen hat und wie man damit umgehen kann.Telerik RadRibbonView erscheint RadRibbonTab verschachtelte Objekte auf der linken Seite in Surface Pro

<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> 

Nun, das sollte nicht passieren.

enter image description here

funktioniert gut, wenn dockt und nicht minimiert enter image description here

Antwort

0

Telerik eine Antwort geschrieben, und es ist im Wesentlichen das Standardverhalten von Tablet-Geräte, die das Problem verursacht. Sie können das Problem beheben, indem Sie das Verhalten des Betriebssystems direkt oder in Code ändern, den Sie anschließen, um einen Konstruktor auszulösen. So oder so scheint es das Problem auf Surface Pro 3 zu lösen und ich nehme auch andere Tablet-Geräte an.

Von Telerik:

‚Das beschriebene Verhalten durch die Einstellungen des Pop-ups des Fensters verursacht wird. Die Popups im Windows-Betriebssystem werden abhängig von der Einstellung "Händigkeit" in verschiedene Richtungen gerendert. Sie können dies überprüfen, indem Sie zu Ihren Windows-Einstellungen gehen: ControlPanel-> Tablet PC Settings. Wenn die Händigkeit auf "Linkshändig" eingestellt ist, was der Standardwert in der meisten Version des Betriebssystems ist, werden die Popup-Menüs von rechts nach links von ihrem Zielelement gerendert. Mit anderen Worten, das Popup mit dem RadRibbonView-Inhalt wird korrekt positioniert. Auf der anderen Seite wird die Einstellung "Rechtshänder" die Popups von rechts nach links zeichnen.

Sie können versuchen, die Handedness auf "Linkshänder" zu ändern und prüfen, ob dadurch das Problem behoben wird. Eine andere Problemumgehung, die versuchen kann, ist die Verwendung von Code. Grundsätzlich können Sie den Wert der SystemParameters.MenuDropAlignment-Eigenschaft ändern. Sie können die folgende Methode verwenden, um dies zu erreichen:

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; 
    } 
} 

'

ich nur den Code Methode hinter meinem Konstruktor des Blicks in dem Code gegeben angeschlossen und es funktionierte gut.

Verwandte Themen