J'ai créé une application sans bordure dans WPF, et cela fonctionne plutôt bien. Toutefois, lorsque je réglais le Windowstate sur plein écran, l'application prend plus d'espace que ma résolution de mon écran. Il existe donc des pixels à l'extérieur de l'écran dans toutes les directions! (On dirait que certaines marges négatives codées dures sont ajoutées pour masquer la bordure par défaut)
Des idées Comment empêcher cela de se produire? P>
My XAML: P>
<Window x:Class="MyApp.Shell" WindowStyle="None" BorderThickness="0" AllowsTransparency="True" Background="Transparent" ResizeMode="CanResizeWithGrip" WindowState="{Binding MainApplicationWindowState}" ...
8 Réponses :
J'ai résolu le problème de cette façon:
xaml: strong> p> Public Class WPFSettings
Public ReadOnly Property Width() As Double
Get
Return System.Windows.SystemParameters.PrimaryScreenWidth
End Get
End Property
Public ReadOnly Property Height() As Double
Get
Return System.Windows.SystemParameters.PrimaryScreenHeight
End Get
End Property
End Class
Merci. Va essayer de sortir. Un problème que je vois avec le primaireCreeNheight est quand un deuxième moniteur est utilisé, mais cela devrait être assez simple de fonctionner! Une note; Puisque vous utilisez le haut et la gauche, qu'en est-il du fond et non? Vont-ils bouger encore plus loin de l'écran?
Parfait. Mais pour moi, cela ne fonctionne que sur le dessus de la XAML que vous avez posté ici, j'ai également défini Windowstate = "Maximized"
in xaml em> définissez la liaison suivante sur la fenêtre pas besoin d'une classe d'utilités supplémentaire. p> p> .maxheight code>:
Mais que si je veux utiliser ma demande sur un deuxième moniteur?
Dans mon cas, la balise XAML de la fenêtre avait la propriété sizetocontent = "vrai" et tout ce que je devais faire était de le supprimer. P>
J'ai trouvé cette excellente solution mais erreur pour moi persiste, Windows est compensé par quelques pixels sur le dessus et à gauche ... J'ai essayé de régler la gauche et la haut à 0 après que je suis Changer l'état de la fenêtre mais rien ne se passe. P> p>
Essayez ceci
Une fonctionnalité nouvelle de .NET a résolu ce problème.
Laissez votre windowstyle = "monoborderwindow" code> ou
"threedborderwindow" code>
Laisser
resizemode = "canréesize" code>, puis ajoutez ceci au xaml à l'intérieur de la fenêtre
<Window>
<WindowChrome.WindowChrome>
<WindowChrome GlassFrameThickness="0" CornerRadius="0" CaptionHeight="0"
UseAeroCaptionButtons="False" ResizeBorderThickness="7" />
</WindowChrome.WindowChrome>
</Window>
Cela ne fonctionne pas et lorsque vous utilisez un windowstyle! = Aucune autorouteTransparence doit être faux!
Je viens de l'essayer avec Windowstyle = "Aucun" et Permettransparency = "vrai" et ça marche très bien. Il permet de redimensionner comme s'il y avait une bordure et lorsque la fenêtre est maximisée, il ne couvre pas le menu Démarrer. (J'ai testé avec .NET 4.7.2, n'a pas essayé de versions antérieures)
Merci c'est la seule solution qui a fonctionné pour moi, utilisez également .NET 4.7.2
J'avais besoin de cela pour travailler à travers différents affichages de taille (comme la plupart des gens qu'il sonne). Donc, j'ai simplement fait cela ...
<Window x:Class="MyApp.MainWindow" ResizeMode="CanResize" WindowStyle="SingleBorderWindow" SizeChanged="Window_SizeChanged"> .... Code .... </Window> public void Window_SizeChanged(object sender, SizeChangedEventArgs e) { if (this.WindowState == WindowState.Maximized) { this.BorderThickness = new System.Windows.Thickness(8); } else { this.BorderThickness = new System.Windows.Thickness(0); } }
J'utilise un déclencheur sur la fenêtre:
<Style.Triggers> <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self},Path=WindowState}" Value="{x:Static WindowState.Maximized}"> <Setter Property="BorderThickness" Value="8"/> </DataTrigger> </Style.Triggers>
WOW il y a 9 ans: D Le problème n'apparaît que lorsque la définition de la méthode et d'un windowChrome est définie?