Comment puis-je créer un formulaire de coins arrondis dans WPF?
J'essaie de rendre les coins d'une fenêtre (WPF) arrondis et cela ne fonctionne pas, j'ai essayé de rendre la fenêtre elle-même transparente et d'ajouter une bordure interne avec des coins arrondis et cela ne fonctionne pas.
Des idées?
4 réponses
Vous devez définir WindowStyle sur WindowStyle.None, qui supprimera le chrome, alors vous pouvez autoriser la transparence qui est un attribut dans L'élément de fenêtre, et définir la couleur d'arrière-plan sur transparent. Tout cela peut être fait en tant qu'attributs de la balise de fenêtre.
WindowStyle="None"
AllowsTransparency="True"
Background="Transparent"
Pour arrondir les coins, utilisez une bordure et définissez la propriété cornerRadius
N'utilisez pas AllowsTransparency c'est lent et bogué, jetez un oeil à ce lien, cherchez la section "Office 2007 sans Aero-ou, vous êtes responsable de tout":
Https://blogs.msdn.microsoft.com/wpfsdk/2008/09/08/custom-window-chrome-in-wpf/
EDIT: certaines des techniques de ce post sont spécifiques à Vista, mais la section" Office 2007 sans Aero " fonctionne sur XP (et décrit en fait quel logiciel écrit Pour Vista doit se replier sur on XP).
Vous devez également faire une bordure transparente autour de votre fenêtre de quelques pixels de large, ou encore les bords de vos angles arrondis coupé
Cela peut aider U.
<Grid DataContext="{Binding ElementName=root}">
<Border Background="#90000000" Visibility="{Binding Visibility}">
<Border BorderBrush="Black" BorderThickness="1" Background="AliceBlue"
CornerRadius="10,0,10,0" VerticalAlignment="Center"
HorizontalAlignment="Center">
<Border.BitmapEffect>
<DropShadowBitmapEffect Color="Black"
Opacity="0.5" Direction="270"
ShadowDepth="0.7" />
</Border.BitmapEffect>
<Grid Margin="10">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBlock x:Name="MessageTextBlock"
Text="{Binding Message}"
TextWrapping="Wrap" Margin="5" />
<UniformGrid Grid.Row="1" Margin="5"
Columns="2" HorizontalAlignment="Center"
VerticalAlignment="Bottom">
<Button x:Name="OkButton"
Content="Ok" Margin="2" />
<Button x:Name="CancelButton"
Content="Cancel" Margin="2" />
</UniformGrid>
</Grid>
</Border>
</Border>
</Grid>