Cambiar el estado en respuesta a una interacción del usuario

Esta página es específica de proyectos Silverlight 2

Al crear su propio control de usuario, puede agregar estados y grupos de estado para cambiar la apariencia del control de usuario según el estado en que se encuentre. Para cambiar estos estados en respuesta a la interacción del usuario (como un clic del mouse), puede agregar métodos del controlador de eventos para llamar al método GoToState (puede estar en inglés).

[!NOTA]

Al modificar la plantilla de un control del sistema, como un botón, los estados predeterminados ya están definidos, además de la respuesta del control a la interacción del usuario. No puede agregar ni quitar los estados predeterminados. No obstante, puede cambiar la apariencia del control en esos diferentes estados y usar el siguiente procedimiento para cambiar los estados.

Para cambiar el estado en respuesta a un clic del mouse

  1. Si aún no ha creado grupos de estado y estados, puede Definir estados visuales y tiempos de transición diferentes en un control de usuario. Por ejemplo, en la siguiente imagen se muestra un control de usuario que representa una carta de una baraja. El grupo de estado SideDisplayed incluye un estado que muestra la carta cara arriba (FaceUp) y un estado que muestra la carta cara abajo (FaceDown).

    Dd185503.74c3b2ef-32ab-4aaa-839d-852741d9b2c2(es-es,Expression.10).png

  2. En Estados, seleccione Base para desactivar la grabación del estado.

  3. En Objetos y escala de tiempo, seleccione el objeto [UserControl] para enlazar con un evento que responderá a la acción sobre la superficie de todo el control de usuario.

  4. En el panel Propiedades, haga clic en el botón Eventos Dd185503.6c67bb3b-e8a2-4a63-bad5-54d5c15b04dd(es-es,Expression.10).png para cambiar de la vista de propiedades a la vista de eventos.

    Dd185503.alert_tip(es-es,Expression.10).gifSugerencia:

    Para cambiar del panel Propiedades a la vista de propiedades, haga clic en el botón PropiedadesDd185503.cee1494c-ef95-4dd4-9fbc-9d02edfa78b7(es-es,Expression.10).png.

  5. Junto al evento MouseLeftButtonDown, escriba un nombre para el método del controlador de eventos, como "goClick".

    Dd185503.98d2b5bb-eedc-4a13-bf87-7b7514868f87(es-es,Expression.10).png

    Dd185503.alert_tip(es-es,Expression.10).gifSugerencia:

    Como alternativa, puede hacer doble clic en el cuadro de texto del evento para generar un nombre predeterminado para el método del controlador de eventos.

    Después de presionar ENTRAR, Microsoft Expression Blend abre el proyecto en Microsoft Visual Studio 2008 si lo ha instalado. Si no ha instalado un editor de código, Expression Blend copia el código del método del controlador de eventos al Portapapeles para que pueda abrir el archivo de código subyacente del control de usuario en un editor de texto y pegarlo en el código desde el Portapapeles.

    private void goClick(object sender, MouseButtonEventArgs e)
    {
    
    }
    
    Private Sub goClick(ByVal sender As System.Object, ByVal e As System.Windows.Input.MouseButtonEventArgs)
    
    End Sub
    

    Para obtener más información acerca de la interoperabilidad de Visual Studio 2008 con Expression Blend, vea Editar un archivo de código subyacente.

  6. Para hacer que el control de usuario cambie de estado, llame al método GoToState (puede estar en inglés) con el nombre del estado. Por ejemplo, pegue el siguiente código en negrita en el archivo de código subyacente:

    private bool isFaceUp = false;
    
    private void goClick(object sender, MouseButtonEventArgs e)
    {
      if (isFaceUp)  {    VisualStateManager.GoToState(this, "FaceDown", true);  }  else  {    VisualStateManager.GoToState(this, "FaceUp", true);}  isFaceUp = !isFaceUp;
    }
    
    Private isFaceUp As Boolean = False
    
    Private Sub goClick(ByVal sender As System.Object, ByVal e As System.Windows.Input.MouseButtonEventArgs)
      If isFaceUp Then    VisualStateManager.GoToState(Me, "FaceDown", True)  Else    VisualStateManager.GoToState(Me, "FaceUp", True)  End If  isFaceUp = Not (isFaceUp)
    End Sub
    
  7. Genere el proyecto (CTRL+MAYÚS+B).

  8. Pruebe el proyecto (F5) y, a continuación, haga clic en el control de usuario para ver si cambia de estado.

Solución de problemas

  • Si recibe el error "No se puede cambiar el archivo de código subyacente. No se encontró la clase siguiente" al escribir un nombre en el panel Eventos en Expression Blend, es posible que tenga que cambiar al editor de código externo (normalmente Microsoft Visual Studio) para volver a cargar la solución. La operación de volver a cargar incluirá los nuevos archivos que definen la clase que falta. Si recibe el error "No se puede cargar la solución" en Visual Studio 2008, es posible que no tenga instalado Microsoft Silverlight Tools para Visual Studio 2008 (puede estar en inglés). Instale las herramientas y, a continuación, escriba un nombre en el panel Eventos en Expression Blend.

  • Si no ve el control de usuario al probar el proyecto (F5) y la ventana del explorador no indica un error, es posible que no haya dibujado una instancia del control de usuario en el documento de inicio. El documento de inicio es el primer documento que aparece al ejecutar la aplicación. Si creó un control de usuario en un documento independiente, tiene que generar el proyecto (CTRL+MAYÚS+B), abrir el documento de inicio (normalmente Page.xaml), abrir el Panel biblioteca Dd185503.0224cabd-5da1-4e01-bddd-4a647401a098(es-es,Expression.10).png, seleccionar el control de usuario en la ficha Controles personalizados y, a continuación, dibujar el control de usuario en la mesa de trabajo.

  • Si tiene problemas al generar la aplicación, es posible que no tenga instalada la versión correcta de Microsoft Silverlight. Para obtener más información, vea Instalar el visor en tiempo de ejecución y las herramientas de Silverlight 2.

Pasos siguientes