Condividi tramite


Modificare gli stati in risposta all'interazione utente

Quando si crea il controllo utente personalizzato, è possibile aggiungere stati e StateGroup per modificare l'aspetto del controllo utente in base allo stato. Per cambiare questi stati in risposta all'interazione utente (ad esempio un clic), vengono aggiunti i metodi del gestore dell'evento per chiamare il metodo GoToState.

Per ulteriori informazioni, vedere Metodo VisualStateManager.GoToState Dd185503.xtlink_newWindow(it-it,Expression.40).png in MSDN.

[!NOTA]

In un progetto Microsoft Silverlight, quando si modifica il modello di un controllo di sistema, ad esempio un pulsante, gli stati predefiniti sono già definiti, oltre alla risposta del controllo all'interazione utente. Non è possibile aggiungere o rimuovere gli stati predefiniti. È tuttavia possibile modificare l'aspetto del controllo in tali stati diversi e utilizzare la procedura seguente per cambiare gli stati.

Per cambiare gli stati in risposta a un clic

Per cambiare gli stati, è possibile utilizzare il comportamento GoToStateAction oppure un metodo del gestore dell'evento.

Per informazioni sull'utilizzo di un comportamento, vedere Aggiungere un comportamento a un oggetto.

La procedura seguente illustra come aggiungere un metodo del gestore dell'evento per cambiare lo stato.

  1. Se non sono ancora stati creati StateGroup e stati, è possibile definire transizioni e stati visivi diversi per un controllo utente. Nella figura seguente, ad esempio, è illustrato un controllo utente che rappresenta una carta in un gioco di carte. Lo StateGroup SideDisplayed include uno stato che visualizza la faccia superiore della carta (FaceUp) e uno stato che visualizza la faccia inferiore della carta (FaceDown).

    Per ulteriori informazioni, vedere Definire diversi stati di visualizzazione e tempi di transizione per un controllo utente.

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

  2. In Stati selezionare Base per disattivare la registrazione dello stato.

  3. Nel pannello Oggetti e sequenza temporale selezionare l'oggetto [UserControl] per associare un evento che risponderà all'azione sull'area dell'intero controllo utente.

  4. Nel pannello Proprietà fare clic su Eventi Dd185503.6c67bb3b-e8a2-4a63-bad5-54d5c15b04dd(it-it,Expression.40).png per passare dalla visualizzazione delle proprietà a quella degli eventi.

    tip noteSuggerimento:

    Per ripristinare la visualizzazione delle proprietà nel pannello Proprietà fare clic su Proprietà Dd185503.cee1494c-ef95-4dd4-9fbc-9d02edfa78b7(it-it,Expression.40).png.

  5. Accanto all'evento MouseLeftButtonDown immettere un nome per il metodo del gestore dell'evento, ad esempio "goClick".

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

    tip noteSuggerimento:

    In alternativa, è semplicemente possibile fare doppio clic nella casella di testo dell'evento per generare un nome predefinito per il metodo del gestore dell'evento.

    Dopo avere premuto INVIO, Microsoft Expression Blend apre il file code-behind del controllo utente in un editor di codice e vi incolla il codice del metodo del gestore dell'evento.

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

    Per ulteriori informazioni, vedere Modificare un file code-behind.

  6. Per far sì che lo stato del controllo utente cambi, chiamare il metodo GoToState Dd185503.xtlink_newWindow(it-it,Expression.40).png con il nome dello stato. Incollare, ad esempio, il seguente codice in grassetto nel file code-behind:

    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. Compilare il progetto (CTRL+MAIUSC+B).

  8. Eseguire un test del progetto (F5) e quindi fare clic sul controllo utente per vedere il cambiamento di stato.

Risoluzione dei problemi

  • Se viene visualizzato l'errore "Impossibile modificare il file code-behind. Impossibile trovare la classe seguente" quando si digita un nome nel pannello Eventi in Expression Blend, potrebbe essere necessario passare all'editor di codice esterno (in genere Microsoft Visual Studio) per ricaricare la soluzione. Durante il ricaricamento verranno inclusi i nuovi file che definiscono la classe mancante.

  • Se viene visualizzato un errore analogo a "Impossibile caricare la soluzione" in Visual Studio 2010, è possibile che non siano installati gli strumenti di Silverlight per Visual Studio 2010. Installare gli strumenti e quindi provare a digitare un nome nel pannello Eventi in Expression Blend.

    Per ulteriori informazioni, vedere Microsoft Silverlight Tools per Visual Studio 2010 Dd185503.xtlink_newWindow(it-it,Expression.40).png.

  • Se il controllo utente non è visibile quando si testa il progetto (F5) e nella finestra del browser non è indicato alcun errore, è possibile che non sia stata disegnata un'istanza del controllo utente nel documento di avvio. Il documento di avvio è il primo documento visualizzato quando si esegue l'applicazione. Se è stato creato un controllo utente in un documento separato, è necessario ricompilare il progetto (CTRL+MAIUSC+B), aprire il documento di avvio (in genere Page.xaml), aprire il pannello Asset facendo clic su Asset Dd185503.0d8b8d29-1af9-418f-8741-be3097d76eab(it-it,Expression.40).png, selezionare il controllo utente dalla categoria Progetto e quindi disegnare il controllo utente sulla tavola da disegno.

  • Se si verificano problemi durante la compilazione dell'applicazione, è possibile che non sia installata la versione corretta di Silverlight.

    Per ulteriori informazioni, vedere Installare gli strumenti e il runtime Silverlight.

Passaggi successivi

Copyright © 2011 Microsoft Corporation. Tutti i diritti riservati.