共用方式為


根據使用者互動變更狀態

當您建立自己的使用者控制項時,可以新增狀態和狀態群組並依據使用者控制項所在的狀態來變更其外觀。若要針對使用者互動 (例如滑鼠點選動作) 變更這些狀態,請新增事件處理常式方法來呼叫 GoToState 方法。

如需詳細資訊,請參閱 MSDN 上的 GoToState

Dd185503.alert_note(ZH-TW,Expression.30).gif注意事項:

在 Microsoft Silverlight 專案中,當您修改系統控制項 (例如按鈕) 的範本時,除了對於使用者互動的控制項回應外,預設狀態也已定義。您無法新增或移除預設狀態。不過,您可以變更那些不同狀態中的控制項外觀,並可使用下列步驟來變更狀態。

回應點選動作變更狀態

若要變更狀態,您可以使用 [GoToStateAction] 行為,或使用事件處理常式方法。

如需有關使用行為的詳細資訊,請參閱將行為新增至物件

下列程序會顯示如何新增事件處理常式方法以變更狀態。

  1. 如果您尚未建立狀態群組和狀態,可以為使用者控制項定義不同的視覺狀態和切換。例如,下列影像會顯示紙牌遊戲中代表紙牌的使用者控制項。SideDisplayed 狀態群組包含顯示紙牌正面 (FaceUp) 和顯示紙牌反面 (FaceDown) 的狀態。

    如需詳細資訊,請參閱定義使用者控制項的不同視覺狀態和切換時間

    Dd185503.74c3b2ef-32ab-4aaa-839d-852741d9b2c2(ZH-TW,Expression.30).png

  2. 在 [狀態] 下,選取 [基底] 以關閉狀態記錄。

  3. 在 [物件與時間軸] 面板中,選取 [UserControl] 物件以連接事件 (回應整個使用者控制項表面區域的動作)。

  4. 在 [屬性] 面板中,按一下 [事件] Dd185503.6c67bb3b-e8a2-4a63-bad5-54d5c15b04dd(ZH-TW,Expression.30).png 以將屬性檢視切換為事件檢視。

    Dd185503.alert_tip(ZH-TW,Expression.30).gif秘訣:

    若要將 [屬性] 面板切換回屬性檢視,請按一下 [屬性] Dd185503.cee1494c-ef95-4dd4-9fbc-9d02edfa78b7(ZH-TW,Expression.30).png

  5. 在 MouseLeftButtonDown 事件旁,輸入事件處理常式方法的名稱,例如「goClick」。

    Dd185503.98d2b5bb-eedc-4a13-bf87-7b7514868f87(ZH-TW,Expression.30).png

    Dd185503.alert_tip(ZH-TW,Expression.30).gif秘訣:

    另外,您只要在事件文字方塊中按兩下即可產生事件處理常式方法的預設名稱。

    當您按下 ENTER 之後,Microsoft Expression Blend 會在程式碼編輯器開啟使用者控制項的程式碼後置檔案,並貼入事件處理常式方法程式碼。

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

    如需詳細資訊,請參閱修改程式碼後置檔案

  6. 若要讓使用者控制項變更狀態,請使用狀態的名稱來呼叫 GoToState 方法 (英文)。例如,將下列粗體標示的程式碼貼入您的程式碼後置檔案中:

    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. 建置專案 (CTRL+SHIFT+B)。

  8. 測試專案 (F5),然後按一下使用者控制項以檢視其變更狀態。

疑難排解

  • 如果出現「無法變更程式碼後置檔案。找不到下列類別」的錯誤,在您輸入名稱至 Expression Blend 中的 [事件] 面板內時,則可能需要切換至外部程式碼編輯器 (通常是 Microsoft Visual Studio) 以重新載入解決方案。重新載入將會包含定義遺失類別的新檔案。

  • 如果在 Visual Studio 2008 中出現「無法載入解決方案」的錯誤,可能是因為尚未安裝 Visual Studio 2008 的 Silverlight 工具。請安裝該工具然後嘗試在 Expression Blend 的 [事件] 面板輸入名稱。

    如需詳細資訊,請參閱 Microsoft

  • 如果您在測試專案時 (F5) 找不到使用者控制項,且瀏覽器視窗沒有指出錯誤,則可能是因為您沒有在啟動文件中繪製使用者控制項的例項。啟動文件是在您執行應用程式時第一個出現的文件。如果您在不同的文件中建立了使用者控制項,則必須建置專案 (CTRL+SHIFT+B)、開啟啟動文件 (通常是 Page.xaml)、開啟 [資產] 面板 (按一下 [資產]Dd185503.0d8b8d29-1af9-418f-8741-be3097d76eab(ZH-TW,Expression.30).png)、從 [專案] 類別中選取使用者控制項,然後在畫板上繪製使用者控制項。

  • 如果您在建置應用程式時發生問題,可能是沒有安裝正確的 Silverlight 版本。

    如需詳細資訊,請參閱安裝 Silverlight 工具和執行階段

下一步