2017-10-24 15 views
0

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 RadRibbonViewがRadRibbonTabネストしたオブジェクトを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> 

これは起こってはいけません。ドッキングとTelerikが応答を掲示し、それが本質的な問題を引き起こしているタブレットデバイスのデフォルトの動作ですenter image description here

答えて

0

を最小化していないとき

enter image description here

が正常に動作します。 OSの動作を直接変更するか、コンストラクタで起動するコードに変更することで修正できます。いずれにしても、Surface Pro 3の問題を簡単に解決できると思われ、他のタブレットデバイスも推測しています。 Telerikから

「説明振る舞いは、ウィンドウのポップアップの設定によって引き起こされます。 Windows OSのポップアップは、Handedness設定に基づいて異なる方向にレンダリングされます。 Windowsの設定:ControlPanel-> Tablet PCの設定で確認できます。ほとんどのOSのデフォルト値である「左利き」に設定されている場合、ポップアップメニューはターゲット要素の右から左にレンダリングされます。言い換えると、RadRibbonViewのコンテンツを含むポップアップは正しく位置付けられます。一方、「右利き」の設定では、ポップアップが右から左に描画されます。

「左利き」に変更して問題が解決するかどうかを確認することができます。試みることのできる別の回避策は、コードを使用することです。基本的には、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; 
    } 
} 

関連する問題