2009-03-17 16 views
30

J'essaie de faire arrondir les coins d'une fenêtre (WPF) 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.Comment faire un formulaire coins arrondis dans WPF?

Des idées?

+9

YAY! Ma première question SO !!! – Shimmy

Répondre

32

Vous devez définir WindowStyle sur WindowStyle.None, ce qui supprimera le chrome, puis vous pouvez autoriser la transparence qui est un attribut dans l'élément Window et définir la couleur d'arrière-plan sur transparent. Tout cela peut être fait en tant qu'attributs à l'étiquette de la fenêtre.

WindowStyle="None" 
AllowsTransparency="True" 
Background="Transparent" 

Pour que les coins arrondis, utilisez une bordure et définissez la propriété cornerRadius

+1

Pouvez-vous montrer l'exemple pour définir la bordure !! – Moumit

2

Vous devez également faire une bordure transparente autour de votre fenêtre qui est quelques pixels de large, ou bien les bords de vos coins arrondis se couper

4

ne pas utiliser AllowsTransparency il est lent et bogué, jetez un oeil à ce lien, recherchez la section « office 2007 sans Aero - Ou bien, 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 sous XP (et décrit en fait quel logiciel écrit pour Vista doit être replacé sous XP) .

+0

En effet. Cet article a quelques bons exemples. J'ai utilisé la technique moi-même à plusieurs reprises. –

+0

Mon problème est que j'ai besoin que mon projet soit compatible avec XP. – Shimmy

+0

Shimmy, les techniques décrites dans cette section sont compatibles avec XP – Nir

2

peut vous aider.

<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> 
Questions connexes