2009-03-17 28 views

Respuesta

32

necesita configurar WindowStyle a WindowStyle.None, lo que eliminará el cromo, luego puede permitir la transparencia, que es un atributo en el elemento Ventana, y establecer el color de fondo en transparente. Todo esto se puede hacer como atributos de la etiqueta de la ventana.

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

Para hacer las esquinas redondeadas, utilizan un conjunto de fronteras y la propiedad CornerRadius

+1

¿Puedes mostrar el ejemplo para establecer el borde? – Moumit

2

También es necesario hacer un borde transparente alrededor de la ventana que está a unos cuantos píxeles de ancho, o de lo contrario los bordes de las esquinas redondeadas conseguir cortado

4

no utilice AllowsTransparency es lento y con errores, echar un vistazo a este enlace, busque la sección "Office 2007 sin Aero - O, usted es responsable de todo":

https://blogs.msdn.microsoft.com/wpfsdk/2008/09/08/custom-window-chrome-in-wpf/

EDITAR: algunas de las técnicas en esta publicación son específicas de Vista, pero la sección "Office 2007 sin Aero" funciona en XP (y realmente describe qué software escrito para Vista tiene que recurrir a XP) .

+0

De hecho. Ese artículo tiene algunos buenos ejemplos. Usé la técnica yo misma varias veces. –

+0

Mi problema es que necesito que mi proyecto sea compatible con XP. – Shimmy

+0

Shimmy, las técnicas descritas en esta sección son compatibles con XP – Nir

2

te puede ayudar.

<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> 
Cuestiones relacionadas