2009-11-19 17 views

Respuesta

4

En nuestra aplicación tenemos Windows con WindowStyle establecido en "ninguno", implementamos la funcionalidad para arrastrar la ventana, pero solo desde el encabezado en lugar de desde cualquier punto de la ventana. Hicimos esto agregando un borde como encabezado, luego agregamos un pulgar para llenar todo el borde. Luego manejamos el método DragDelta en el pulgar en el código subyacente para la ventana.

<Border 
     Name="headerBorder" 
     Width="Auto" 
     Height="50" 
     VerticalAlignment="Top" 
     CornerRadius="5,5,0,0" 
     DockPanel.Dock="Top" 
     Background="{StaticResource BackgroundBrush}" 
     BorderThickness="1,1,1,1" 
     BorderBrush="{StaticResource BorderBrush}"> 
     <Grid> 
      <Thumb 
       x:Name="headerThumb" 
       Opacity="0" 
       Background="{x:Null}" 
       Foreground="{x:Null}" 
       DragDelta="headerThumb_DragDelta"/> 
     </Grid> 
    </Border> 

Luego, en el código subyacente tenemos el siguiente controlador de eventos ...

private void headerThumb_DragDelta(object sender, DragDeltaEventArgs e) 
{ 
    Left = Left + e.HorizontalChange; 
    Top = Top + e.VerticalChange; 
} 

No sé si esto es mejor que el otro método, es sólo la forma en que hicimos eso.

43

estoy usando una ventana principal para mantener páginas (creación de un programa de estilo de navegación), y en el código detrás de mi ventana principal, que inserta esta ...

protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e) 
{ 
    base.OnMouseLeftButtonDown(e); 

    // Begin dragging the window 
    this.DragMove(); 
} 

... y funciona como un encanto. Esto es con windowstyle = none. Es agradable en el sentido de que puede hacer clic en cualquier lugar de la aplicación y moverlo en lugar de limitarse a una barra superior.

2

ya sea dentro de las ventanas en función de la carga o dentro de la red está en función de la carga usar un deligate para activar el método DragMove() el clic del ratón

private void Grid_Loaded(object sender, RoutedEventArgs e) 
{ 
      this.MouseLeftButtonDown += delegate{DragMove();}; 
} 
+0

En lugar de MouseDown se debe utilizar MouseLeftButtonDown, ya que sólo se puede llamar Arrastre cuando el botón primario del mouse esté desactivado. –

+0

@ DušanKnežević sí, eso es cierto! Salté con una solución para correr rápido. –

Cuestiones relacionadas