VisualStateManager.GoToStateCore 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
在衍生類別中覆寫時,會在狀態之間轉換控制項。
protected:
virtual bool GoToStateCore(Control ^ control, FrameworkElement ^ templateRoot, Platform::String ^ stateName, VisualStateGroup ^ group, VisualState ^ state, bool useTransitions) = GoToStateCore;
bool GoToStateCore(Control const& control, FrameworkElement const& templateRoot, winrt::hstring const& stateName, VisualStateGroup const& group, VisualState const& state, bool const& useTransitions);
protected virtual bool GoToStateCore(Control control, FrameworkElement templateRoot, string stateName, VisualStateGroup group, VisualState state, bool useTransitions);
function goToStateCore(control, templateRoot, stateName, group, state, useTransitions)
Protected Overridable Function GoToStateCore (control As Control, templateRoot As FrameworkElement, stateName As String, group As VisualStateGroup, state As VisualState, useTransitions As Boolean) As Boolean
參數
- control
- Control
控制項要在之間轉換的兩個狀態。
- templateRoot
- FrameworkElement
控制項 ControlTemplate的根項目。
- stateName
-
String
Platform::String
winrt::hstring
轉換後的狀態名稱。
- group
- VisualStateGroup
狀態所屬的 VisualStateGroup 。
- state
- VisualState
轉換後的狀態表示。
- useTransitions
-
Boolean
bool
true 表示使用 VisualTransition 在狀態之間轉換;否則為 false。
傳回
bool
如果控制項成功轉換為新狀態,則為true;否則為false。
備註
此 API 是定義自訂 VisualStateManager 行為的案例的一部分。 覆寫 GoToStateCore 會變更自訂類別行為中的狀態行為。
若要參考自訂VisualStateManager類別,請在您想要使用自訂VisualStateManager類別行為的任何控制項範本內設定VisualStateManager.CustomVisualStateManager附加屬性的值。 您通常會透過Application.Resources中的預設 XAML 建構,建立自訂VisualStateManager類別的實例。 然後 ,VisualStateManager.CustomVisualStateManager 附加屬性會使用 {StaticResource} 標記延伸 參考來設定自訂 VisualStateManager 資源的索引鍵。
繼承者的注意事項
當您自訂VisualStateManager類別的取用者呼叫GoToState來變更控制項的視覺狀態時,這是您覆寫的預設行為:+ 如果由 stateName命名的VisualState具有Storyboard,腳本就會開始。
- 如果控制項在新要求狀態之前使用的 VisualState 具有 分鏡腳本,該分鏡腳本就會停止。 如果group中不存在stateName的VisualState,您的實作應該會傳回false。
如果控制項已在 VisualState 中要求為 stateName,則您的實作應該會傳回 true。
如需預設行為的詳細資訊,請參閱 GoToState。
視覺狀態變更的事件
當控制項開始轉換GoToState呼叫所要求的狀態時,CurrentStateChanging就會引發。 如果 VisualTransition 套用至狀態變更,此事件會在轉換開始時發生。
當控制項處於GoToState呼叫要求的狀態之後,CurrentStateChanged就會引發,就像新的Storyboard開始一樣。 新分鏡腳本完成時不會引發任何事件。
如果未套用VisualTransition,則 CurrentStateChanging 和 CurrentStateChanged會連續引發,但如果兩者都發生,則會以該順序保證。
不過,如果狀態變更轉換被新的 GoToState 呼叫中斷,則不會在第一次狀態轉換時引發 CurrentStateChanged 事件。 下一個要求的狀態變更會引發新的事件系列。
覆寫 RaiseCurrentStateChanged 和 RaiseCurrentStateChanging 的行為是選擇性的:預設實作如何和何時引發事件可能適合您的自訂類別。