Deshabilitar el botón cuando se hace clic y habilitar otros botones

tengo tres botones en mi ventana wpf ¿cuál es la mejor manera de deshabilitar el botón cuando se hace clic y habilitar otros dos botones?

<Button Name="initialzeButton"
                    Width="50"
                    Height="25"
                    Margin="460,0,0,0"
                    HorizontalAlignment="Left"
                    VerticalAlignment="Center"
                    Click="initialzeButton_Click"
                    Content="Start"
                    Cursor="Hand" />
            <Button Name="uninitialzeButton"
                    Width="50"
                    Height="25"
                    Margin="0,0,64,0"
                    HorizontalAlignment="Right"
                    VerticalAlignment="Center"
                    Click="uninitialzeButton_Click"
                    Content="Stop"
                    Cursor="Hand" />
            <Button Name="loadButton"
                    Width="50"
                    Height="25"
                    Margin="0,0,9,0"
                    HorizontalAlignment="Right"
                    VerticalAlignment="Center"
                    Click="loadButton_Click"
                    Content="Load"
                    Cursor="Hand" />

ahora uso de esta manera en cada botón :(

      private void uninitialzeButton_Click(object sender, RoutedEventArgs e)
      {

            this.uninitialzeButton.IsEnabled = false;
            if (!this.initialzeButton.IsEnabled)
            {
                 this.initialzeButton.IsEnabled = true;
            }
            if (!this.loadButton.IsEnabled)
            {
                 this.loadButton.IsEnabled = true;
            }


      }

preguntado el 04 de julio de 12 a las 10:07

3 Respuestas

¿Cuál es su definición de 'mejor manera'? ¿Es rápido y con pocas líneas de código o elegante o...

Se me ocurren varias formas:
- Use MVVM Light: 1 comando de retransmisión para los tres botones, 3 objetos de dependencia (propiedades en el modelo de vista) para isEnabled, que se establecerá en falso, solo establezca isEnabled en verdadero para el botón en el que se hizo clic (que podría enviarse como un parámetro en el comando de retransmisión).
- Use booleanconverters/booleaninverterconverters en la propiedad isEnabled.
- Cambie el estilo del botón de radio para que parezca un botón, reemplace los tres botones con un grupo de botones de radio. Cuando se selecciona un botón de radio, los otros se deseleccionarán, diseñándolos como deshabilitados. Evite que se haga clic en los elementos deseleccionados.

Saludos,

Michel

Respondido 04 Jul 12, 10:07

puedes hacer algo como esto en la carga de la página -

PostBackOptions postBackOptions = new PostBackOptions(Button1);
            Button1.OnClientClick = "this.disabled=true;";
            Button1.OnClientClick += ClientScript.GetPostBackEventReference(postBackOptions);

Respondido 04 Jul 12, 10:07

esto es para button1_clcik. Puede agregar el mismo controlador para otros botones: todos

creo que esto para el proyecto web mi proyecto es wpf - Tarek dijo

Para una solución XAML pura, envuélvalos en un ListBox sin estilo y vincule el clic a la selección y la selección al estado deshabilitado.

Respondido 04 Jul 12, 10:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.