Share via


VisualStateManager.GoToStateCore 方法

定義

在衍生類別中覆寫時,會在狀態之間轉換控制項。

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

傳回

Boolean

bool

如果控制項成功轉換為新狀態,則為true;否則為false

備註

此 API 是定義自訂 VisualStateManager 行為的案例的一部分。 覆寫 GoToStateCore 會變更自訂類別行為中的狀態行為。

若要參考自訂VisualStateManager類別,請在您想要使用自訂VisualStateManager類別行為的任何控制項範本內設定VisualStateManager.CustomVisualStateManager附加屬性的值。 您通常會透過Application.Resources中的預設 XAML 建構,建立自訂VisualStateManager類別的實例。 然後 ,VisualStateManager.CustomVisualStateManager 附加屬性會使用 {StaticResource} 標記延伸 參考來設定自訂 VisualStateManager 資源的索引鍵。

繼承者的注意事項

當您自訂VisualStateManager類別的取用者呼叫GoToState來變更控制項的視覺狀態時,這是您覆寫的預設行為:+ 如果由 stateName命名的VisualState具有Storyboard,腳本就會開始。

如果控制項已在 VisualState 中要求為 stateName,則您的實作應該會傳回 true

如需預設行為的詳細資訊,請參閱 GoToState

視覺狀態變更的事件

當控制項開始轉換GoToState呼叫所要求的狀態時,CurrentStateChanging就會引發。 如果 VisualTransition 套用至狀態變更,此事件會在轉換開始時發生。

當控制項處於GoToState呼叫要求的狀態之後,CurrentStateChanged就會引發,就像新的Storyboard開始一樣。 新分鏡腳本完成時不會引發任何事件。

如果未套用VisualTransition則 CurrentStateChanging 和 CurrentStateChanged會連續引發,但如果兩者都發生,則會以該順序保證。

不過,如果狀態變更轉換被新的 GoToState 呼叫中斷,則不會在第一次狀態轉換時引發 CurrentStateChanged 事件。 下一個要求的狀態變更會引發新的事件系列。

覆寫 RaiseCurrentStateChangedRaiseCurrentStateChanging 的行為是選擇性的:預設實作如何和何時引發事件可能適合您的自訂類別。

適用於

另請參閱