根據使用者互動變更狀態

本頁僅適用 Silverlight 2 專案

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

Dd185503.alert_note(zh-tw,Expression.10).gif注意事項:

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

若要針對滑鼠點選動作變更狀態

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

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

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

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

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

    Dd185503.alert_tip(zh-tw,Expression.10).gif秘訣:

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

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

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

    Dd185503.alert_tip(zh-tw,Expression.10).gif秘訣:

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

    在按下 ENTER 鍵之後,Microsoft Expression Blend 會在已安裝的 Microsoft Visual Studio 2008 中開啟專案。如果您尚未安裝程式碼編輯器,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
    

    如需有關 Visual Studio 2008 與 Expression Blend 互通性的詳細資訊,請參閱編輯程式碼後置檔案

  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 的 Microsoft Silverlight 工具 (英文)。請安裝該工具然後嘗試在 Expression Blend 的 [事件] 面板輸入名稱。

  • 如果您在測試專案時 (F5) 找不到使用者控制項,且瀏覽器視窗沒有指出錯誤,則可能是因為您沒有在啟動文件中繪製使用者控制項的例項。啟動文件是在您執行應用程式時第一個出現的文件。如果您在不同的文件中建立了使用者控制項,則必須建置專案 (CTRL+SHIFT+B)、開啟啟動文件 (通常是 Page.xaml)、開啟 [資產庫] Dd185503.0224cabd-5da1-4e01-bddd-4a647401a098(zh-tw,Expression.10).png、從 [自訂控制項] 索引標籤中選取使用者控制項,然後在畫板上繪製使用者控制項。

  • 如果您在建置應用程式時發生問題,可能是沒有安裝正確的 Microsoft Silverlight 版本。如需詳細資訊,請參閱安裝 Silverlight 2 工具和執行階段

下一步

  • 您可以加入動畫,例如當滑鼠指標移到按鈕上方時按鈕會旋轉。如需詳細資訊,請參閱新增狀態變更後播放的動畫

  • 您可以在 Expression 社群網站 內的「How Do I?」視訊教學課程中,檢視使用狀態和狀態群組的現實生活案例。