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?

31
demandé sur Patrick Hofman 2009-03-17 18:04:56

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

32
répondu CodeMonkey1313 2009-03-17 15:12:05

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).

4
répondu Nir 2016-08-22 11:05:19

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é

2
répondu Paul Betts 2009-03-17 15:17:16

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>
2
répondu Mou 2013-03-18 14:50:41