ventanas tutorial que navegacion español entre ejemplos wpf xaml controls code-behind

tutorial - Deshabilitar todos menos un control secundario en una ventana de WPF



wpf tutorial español (3)

Tengo un montón de controles en mi ventana. Uno de ellos es un botón de actualización que realiza una tarea engorrosa en un hilo de fondo.

Cuando el usuario hace clic en el botón de actualización, pongo el cursor en estado de espera (reloj de arena) y desactivo la ventana completa - Me.IsEnabled = False .

Me gustaría apoyar la cancelación de la acción de actualización al permitir que el usuario haga clic en un botón de cancelar, pero no puedo facilitarlo mientras toda la ventana está desactivada.

¿Hay alguna forma de hacerlo además de deshabilitar uno por uno cada control (excepto el botón cancelar) y luego volver a habilitarlos uno por uno cuando el usuario haga clic en cancelar?


Puede colocar todos los controles en un panel (Cuadrícula, Panel de apilamiento, etc.) y dejar el botón Cancelar en otro panel. Luego configure la propiedad IsEnabled del otro panel.

En la práctica, esto probablemente introducirá más de un panel adicional.

Por ejemplo, si tiene un StackPanel de botones, puede agregar un StackPanel adicional:

<StackPanel Orientation="Horizontal"> <StackPanel x:Name="controlContainer" Orientation="Horizontal"> <!-- Other Buttons Here --> </StackPanel> <Button Content="Cancel" /> </StackPanel>

Luego, haría lo siguiente para deshabilitar todo menos el botón cancelar:

controlContainer.IsEnabled = false;



También quería que el usuario pudiera cancelar la carga. Encontré una solución encantadora.

foreach (Control ctrl in this.Controls) ctrl.Enabled = false; CancelButton.Enabled = true;

Esto también permite que la ventana principal sea seleccionada y movida a diferencia de esto. this.Enabled = false; que bloquea por completo la ventana.