2009-02-03 16 views
9

Tengo una ventana transparente y sin bordes en WPF, con una decoración elegante en la parte inferior. Hay un pie de página personalizado con algunas curvas no convencionales y lo que no muestra el logotipo de la empresa. Esta ventana debe ser redimensionable con un agarre en la esquina inferior derecha como ventanas convencionales.ocultar el agarre de cambio de tamaño predeterminado en wpf

De todos modos, he puesto mi propio ResizeGrip en un lugar que está realmente en el pie de página, sin embargo, el agarre predeterminado todavía aparece y flota en el espacio debido a la ventana invisible.

¿Cómo oculto el ResizeGrip predeterminado?

Respuesta

25

La apariencia de un control de tamaño se controla a través de la propiedad de dependencia ResizeMode en la ventana.

Si esto se establece en CanResizeWithGrip:

<Window x:Class="WpfApplication1.Window1" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="Window1" Height="50" Width="150" 
     WindowStyle="None" AllowsTransparency="True" Background="#19FFFFFF" 
     ResizeMode="CanResizeWithGrip"> 
    <Grid></Grid> 
</Window> 

La ventana se verá así:

With Grip

Si se establece a CanResize (por defecto):

<Window x:Class="WpfApplication1.Window1" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="Window1" Height="50" Width="150" 
     WindowStyle="None" AllowsTransparency="True" Background="#19FFFFFF" 
     ResizeMode="CanResize"> 
    <Grid></Grid> 
</Window> 

La ventana se verá de la siguiente manera:

Can Resize

+1

Las imágenes están muertas. –

+0

@SebastianNegraszus He añadido algunos nuevos. –

18

Así que para ocultar el agarre por defecto, que sobreescribí el estilo por defecto ResizeGrip tales que es la visibilidad está oculto. Fácil con la ayuda de Expression Blend 2.

<Style TargetType="{x:Type ResizeGrip}"> 
    <Setter Property="MinWidth" Value="{DynamicResource {x:Static SystemParameters.VerticalScrollBarWidthKey}}"/> 
    <Setter Property="MinHeight" Value="{DynamicResource {x:Static SystemParameters.HorizontalScrollBarHeightKey}}"/> 
    <Setter Property="Background" Value="Transparent"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type ResizeGrip}"> 
       <Grid SnapsToDevicePixels="True" Background="{TemplateBinding Background}"> 
       </Grid> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
    <Setter Property="Visibility" Value="Hidden"/> 
</Style> 

Entonces creé mi propia ResizeGrip en mi decoración de la ventana a medida con un estilo que es idéntico al estilo de agarre por defecto.

<SolidColorBrush x:Key="ResizeGripperForeground" Color="#B8B4A2"/> 
<Style x:Key="VisibleResizeGrip" TargetType="{x:Type ResizeGrip}"> 
    <Setter Property="MinWidth" Value="{DynamicResource {x:Static SystemParameters.VerticalScrollBarWidthKey}}"/> 
    <Setter Property="MinHeight" Value="{DynamicResource {x:Static SystemParameters.HorizontalScrollBarHeightKey}}"/> 
    <Setter Property="Background" Value="Transparent"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type ResizeGrip}"> 
       <Grid SnapsToDevicePixels="True" Background="{TemplateBinding Background}"> 
        <Path Fill="White" HorizontalAlignment="Right" Margin="0,0,2,2" VerticalAlignment="Bottom" Data="M 8,0 L 10,0 L 10,2 L 8,2 Z M 4,4 L 6,4 L 6,6 L 4,6 Z M 8,4 L 10,4 L 10,6 L 8,6 Z M 0,8 L 2,8 L 2,10 L 0,10 Z M 4,8 L 6,8 L 6,10 L 4,10 Z M 8,8 L 10,8 L 10,10 L 8,10 Z"/> 
        <Path Fill="{StaticResource ResizeGripperForeground}" HorizontalAlignment="Right" Margin="0,0,3,3" VerticalAlignment="Bottom" Data="M 8,0 L 10,0 L 10,2 L 8,2 Z M 4,4 L 6,4 L 6,6 L 4,6 Z M 8,4 L 10,4 L 10,6 L 8,6 Z M 0,8 L 2,8 L 2,10 L 0,10 Z M 4,8 L 6,8 L 6,10 L 4,10 Z M 8,8 L 10,8 L 10,10 L 8,10 Z"/> 
     <Path Data="M8,0L10,0 10,2 8,2z M4,4L6,4 6,6 4,6z M8,4L10,4 10,6 8,6z M0,8L2,8 2,10 0,10z M4,8L6,8 6,10 4,10z M8,8L10,8 10,10 8,10z" Fill="White" HorizontalAlignment="Right" Margin="0,0,2,2" VerticalAlignment="Bottom" /> 
     <Path Data="M8,0L10,0 10,2 8,2z M4,4L6,4 6,6 4,6z M8,4L10,4 10,6 8,6z M0,8L2,8 2,10 0,10z M4,8L6,8 6,10 4,10z M8,8L10,8 10,10 8,10z" Fill="{StaticResource ResizeGripperForeground}" HorizontalAlignment="Right" Margin="0,0,3,3" VerticalAlignment="Bottom" /> 
     </Grid> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
+0

¡Gracias por conducir por el tirón downvote! – Jippers

+0

Bueno. Gracias Jippers. – Amsakanna

Cuestiones relacionadas