wpf - ventana - impedir mover formulario c#
No puede arrastrar y mover un formulario WPF (4)
Diseño un formulario WPF con Window Style = None. Así que no puedo ver la barra de arrastre en el formulario. ¿Cómo puedo mover el formulario con WindowStyle = ninguna propiedad?
En nuestra aplicación, tenemos Windows con WindowStyle configurado en "ninguno", implementamos la funcionalidad para arrastrar la Ventana, pero solo desde el encabezado en lugar de hacerlo desde cualquier punto de la Ventana. Hicimos esto agregando un borde como encabezado y luego agregando un pulgar para rellenar 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 la forma en que lo hicimos.
Estoy usando una ventana principal para contener páginas (creando un programa de estilo de navegación), y en el código detrás de mi ventana principal, inserté este ...
protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)
{
base.OnMouseLeftButtonDown(e);
// Begin dragging the window
this.DragMove();
}
... Y funciona como un encanto. Esto es con estilo de ventana = ninguno. Es agradable en el sentido de que puede hacer clic en cualquier lugar de la aplicación y moverla en lugar de limitarse a una barra superior.
Vea esta pregunta .
Básicamente se usa el método Window.DragMove para esto.
ya sea dentro de las ventanas en la función de carga o dentro de la cuadrícula en la función de carga, use un deligate para activar el método DragMove () al hacer clic con el mouse
private void Grid_Loaded(object sender, RoutedEventArgs e)
{
this.MouseLeftButtonDown += delegate{DragMove();};
}