2016-09-23 3 views
0

Das Problem ist die Grenze für Windows zu dick ist 10.WindowChrome - zu dick Grenze für Windows 10

Wenn Sie den Screenshot nicht unten sehen, dann ist hier der Text:

  1. Diese Grenze zu dick ist, links rechts und unten
  2. Border an diesen Kanten auch heller ist

Wie ein 1px Grenze wie Google Chrome zu machen (oder Windows 10 ist Explorer) hat? Negative 1px funktioniert nicht gut, es macht die Grenze weiß und es ist immer noch dick.

Screenshot of a problem

Framework .NET Framework 4.6.2.

Code:

<Window 
     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:AnotherOffice" 
     xmlns:System="clr-namespace:System;assembly=mscorlib" x:Name="window" x:Class="AnotherOffice.MainWindow" 
     mc:Ignorable="d" 
     Title="AnotherOffice Text v0.0.1 - New document" Height="720" Width="1280" Background="{x:Null}" WindowState="Maximized" Margin="0" BorderThickness="8"> 
    <Window.Style> 
     <Style TargetType="{x:Type Window}"> 
      <Setter Property="WindowChrome.WindowChrome"> 
       <Setter.Value> 
        <WindowChrome 
         GlassFrameThickness="8,40,8,8" 
         ResizeBorderThickness="2" 
         CornerRadius="0" 
         CaptionHeight="32" 
         UseAeroCaptionButtons="True" 
         /> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </Window.Style> 
    <local:AnotherOfficeTextBase Margin="0,32,0,0"/> 
</Window> 

UPD: Versucht diesen Code zu verwenden:

if (SystemParameters.IsGlassEnabled) 
{ 
    WindowChrome winChrome = new WindowChrome(); 
    winChrome.CaptionHeight = 32; 
    winChrome.CornerRadius = new CornerRadius(0); 
    winChrome.GlassFrameThickness = new Thickness(8, 32, 8, 8); 
    winChrome.ResizeBorderThickness = new Thickness(1); 
    winChrome.UseAeroCaptionButtons = true; 
    WindowChrome.SetWindowChrome(this, winChrome); 
    InitializeComponent(); 
} else 
{ 
    MainWindowNoGlass fallback = new MainWindowNoGlass(); 
    fallback.Show(); 
    Close(); 
} 

Und ... keine Wirkung.

+0

Ich benutze nur Mah.Apps-Fenster-Stil (auch wenn ich ihre Metro Interface-Stile nicht mehr verwenden). Dann weiß ich, dass es über alle Betriebssysteme hinweg konsistent ist und mehr Kontrolle über alle Elemente hat. – Joe

+0

@Joe Ich würde gerne meine eigene Lösung verwenden, weil ich ein TabControl in meinem Fenster Chrome haben möchte. Irgendwelche Ideen? – ArtyomIsFlash

+0

Ah, natürlich. Ich würde einen Blick auf ihre BorderlessWindowBehavior Code dann https://github.com/MahApps/MahApps.Metro/blob/fd47b9ff616febc36c86a6b332578e011f181ce3/MahApps.Metro/Behaviours/BorderlessWindowBehavior.cs. – Joe

Antwort

1

Hier ist die einfachste Lösung, die ich herausgefunden haben:

Holen Sie sich das Fenster Chrom, usw. An der Spitze des Inhaltsbereich im Hauptfenster der XAML Randstärke in Bezug aller Code befreien, fügen Sie dieses ein:

<WindowChrome.WindowChrome> 
    <WindowChrome GlassFrameThickness="0.5,28,0,0.5" NonClientFrameEdges="Right"/> 
</WindowChrome.WindowChrome> 
<Window.Template> 
    <ControlTemplate> 
     <ContentPresenter Content="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=Window}, Path=Content}"/> 
    </ControlTemplate> 
</Window.Template> 

Das wird alles behandeln. Sie können Inhalte im Non-Client-Bereich leicht zeichnen, und das Fenster wird normal aussehen (genug). Wenn Sie wirklich möchten, dass der Hintergrund auch weiß ist, können Sie GlassFrameThickness auf -1 setzen und eine Grenze von 0,5 Einheiten auf der unteren und linken Seite zeichnen. Ansonsten können Sie einfach ein großes weißes Rechteck zeichnen.

Verwandte Themen