2015-11-22 12 views
5

Meine RibbonWindow Desktop-Anwendung zeigt eine dicken schwarzen Rand auf beiden Seiten in Windows 10. Sie können dies durch eine einfache WPF-Anwendung reproduzieren, die ein RibbonWindow zeigt. Die Grenze ist nicht zeigt auf Windows 8.x.Dicker Rand auf der rechten Seite und auf der linken Seite

Weiß jemand, wie man die Grenze entfernt?

enter image description here

Irgend so ein Typ fragte eine ähnliche Frage auf msdn, und die Antwort ‚ist es ein bekanntes Problem‘. Aber nach der bereitgestellten link kann ich keine spezifische finden.

Kann mir also jemand helfen?

Edit: Die Farbe der Grenzen ist schwarz, wenn das Fenster nicht aktiv ist. Wenn das Fenster aktiv ist, erhält der Rahmen die Farbe aus der angepassten Windows-Akzentfarbe.

+0

Basierend auf den Links, die Sie, sofern sie es sieht aus wie genau das "ein bekanntes Problem". Ein anderes Plakat sagte, das RibbonWindow nicht zu benutzen, da es schrecklich veraltet ist. Nach einigen der Probleme, die RibbonWindow hat, sieht es so aus, als ob Microsoft eine Menge von ihnen geschlossen hat und sie auf "nicht reparieren" setzt, obwohl es sich um relativ ernste Probleme handelt. Es kann sein, dass das RibbonWindow auf dem Weg ist, veraltet zu sein. – Danielle

+0

Zumindest RibbonWindow ist noch nicht veraltet. Den Links folgend gibt es keine Beschreibung des "Border-Bugs". Nur: * Der Fensterinhalt (Client-Bereich) wird abgeschnitten, wenn sich das Fenster im maximierten Modus befindet. * Der Fensterrahmen ist zu dünn. * QuickAccessToolbar hat nicht genug "Rand" an der Spitze. * Der Fenstertitel ist verschwommen und hat nicht genügend "Rand" an der Spitze. – gReX

+0

https://connect.microsoft.com/VisualStudio/Feedback/Details/1263145 – gReX

Antwort

1

Verwenden Sie WindowChrome mit GlassFrameThickness = GlassFrameCompleteThickness.

Dies ist keine ideale Lösung - Sie müssen sorgfältig Platz für den Fenstertitel sowie die Schaltflächen zum Maximieren, Minimieren und Schließen schaffen. Trotzdem wird das Grenzproblem, mit dem Sie es zu tun haben, beseitigt.

Ein Beispiel für die Verwaltung des Layouts von Inhalten, wenn WindowChrome verwendet wird, finden Sie unter this SO antwort.

ist die komplette XAML, die auch dazu beitragen sollte:

<RibbonWindow x:Class="RibbonTest.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:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:local="clr-namespace:RibbonTest" 
       xmlns:shell="clr-namespace:System.Windows.Shell;assembly=PresentationFramework" 
     mc:Ignorable="d" 
     Title="RibbonWindow" Height="350" Width="525"> 
    <WindowChrome.WindowChrome> 
     <WindowChrome GlassFrameThickness="{x:Static shell:WindowChrome.GlassFrameCompleteThickness}"/> 
    </WindowChrome.WindowChrome> 
    <Window.Template> 
     <ControlTemplate> 
      <Grid> 
       <Grid.RowDefinitions> 
        <RowDefinition Height="30"/> 
        <RowDefinition Height="1*"/> 
       </Grid.RowDefinitions> 

       <!-- Opacity of < 1.0 helps show the minimize, maximize and close buttons --> 
       <Border Grid.Row="0" Background="Wheat" Opacity="0.8"> 
        <Grid> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="30" /> 
          <ColumnDefinition Width="1*"/> 
         </Grid.ColumnDefinitions> 


         <!-- Window Title - Center Aligned --> 
         <TextBlock 
          Grid.Column="1" 
          TextAlignment="Center" 
          VerticalAlignment="Center" 
          Text="{Binding Title, RelativeSource={RelativeSource TemplatedParent}}" /> 

        </Grid> 
       </Border> 

       <!-- This is the Window's main content area --> 
       <!-- Top margin 44 = WindowChrome ResizeBorderThickness (4) + CaptionHeight(40) --> 
       <!-- Bottom margin 1 is somewhat arbitrary --> 
       <Border Grid.Row="1" Background="White" Opacity="0.5"> 
        <ContentPresenter Content="{Binding Content, RelativeSource={RelativeSource TemplatedParent}}"/> 
       </Border> 
      </Grid> 
     </ControlTemplate> 
    </Window.Template> 
    <Grid> 
     <Border Background="Cyan" BorderBrush="BlanchedAlmond" BorderThickness="5"> 
      <Label FontSize="80" HorizontalAlignment="Center" VerticalAlignment="Center">Hello World</Label> 
     </Border> 
    </Grid> 
</RibbonWindow> 

Das resultierende RibbonWindow etwas würde wie folgt aussehen:

enter image description here

+0

sehr nett. Es funktioniert mit meinem Beispielprojekt :-). Anstatt den Boarder auf Weizen zu setzen, verbinde ich ihn mit {DynamicResource {x: Static SystemColors.ActiveBorderBrush}}. Überprüfen Sie den Einfluss auf meine Stile. – gReX

Verwandte Themen