J'essayais de créer une fenêtre sans bordure avec WindowStyle="None"
mais quand je l'ai testé, il semble qu'une barre blanche apparaisse en haut, après quelques recherches, il semble que ce soit un "Redimensionner la bordure", voici une image (j'ai remarqué en jaune):
Après quelques recherches sur Internet et de nombreuses solutions non xaml difficiles, toutes les solutions que j'ai trouvées étaient du code en C # et beaucoup de lignes de code, j'ai trouvé indirectement la solution ici: la fenêtre personnalisée maximale perd l'effet d'ombre portée
<WindowChrome.WindowChrome>
<WindowChrome
CaptionHeight="0"
ResizeBorderThickness="5" />
</WindowChrome.WindowChrome>
Remarque : vous devez utiliser le framework .NET 4.5, ou si vous utilisez une version plus ancienne, utilisez WPFShell, référencez simplement le shell et utilisez à la Shell:WindowChrome.WindowChrome
place.
J'ai utilisé la WindowChrome
propriété de Window, si vous l'utilisez, la "bordure de redimensionnement" blanche disparaît, mais vous devez définir certaines propriétés pour fonctionner correctement.
CaptionHeight: Il s'agit de la hauteur de la zone de légende (barre d'en-tête) qui permet le comportement d'accrochage Aero, double-clic comme le fait une barre de titre normale. Réglez-le sur 0 (zéro) pour que les boutons fonctionnent.
ResizeBorderThickness: Il s'agit de l'épaisseur au bord de la fenêtre où vous pouvez redimensionner la fenêtre. Je mets 5 parce que j'aime ce nombre, et parce que si vous mettez zéro, il est difficile de redimensionner la fenêtre.
Après avoir utilisé ce code court, le résultat est le suivant:
Et maintenant, la bordure blanche a disparu sans utiliser ResizeMode="NoResize"
et AllowsTransparency="True"
, elle montre également une ombre dans la fenêtre.
Plus tard, j'expliquerai comment faire fonctionner les boutons (je n'ai pas utilisé d'images pour les boutons) facilement avec un code simple et court, je suis nouveau et je pense que je peux poster sur codeproject, car ici je n'ai pas trouvé l'endroit pour publier le tutoriel.
Peut-être qu'il y a une autre solution (je sais qu'il y a des solutions dures et difficiles pour les noobs comme moi) mais cela fonctionne pour mes projets personnels.
Voici le code complet
<Window x:Class="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:Concursos"
mc:Ignorable="d"
Title="Concuros" Height="350" Width="525"
WindowStyle="None"
WindowState="Normal"
ResizeMode="CanResize"
>
<WindowChrome.WindowChrome>
<WindowChrome
CaptionHeight="0"
ResizeBorderThickness="5" />
</WindowChrome.WindowChrome>
<Grid>
<Rectangle Fill="#D53736" HorizontalAlignment="Stretch" Height="35" VerticalAlignment="Top" PreviewMouseDown="Rectangle_PreviewMouseDown" />
<Button x:Name="Btnclose" Content="r" HorizontalAlignment="Right" VerticalAlignment="Top" Width="35" Height="35" Style="{StaticResource TempBTNclose}"/>
<Button x:Name="Btnmax" Content="2" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0,0,35,0" Width="35" Height="35" Style="{StaticResource TempBTNclose}"/>
<Button x:Name="Btnmin" Content="0" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0,0,70,0" Width="35" Height="35" Style="{StaticResource TempBTNclose}"/>
</Grid>
Je vous remercie!