VisualStateManager 클래스

정의

컨트롤의 상태 간 전환에 사용되는 상태 및 논리를 관리합니다.Manages states and the logic for transitioning between states for controls.

public ref class VisualStateManager : System::Windows::DependencyObject
public class VisualStateManager : System.Windows.DependencyObject
type VisualStateManager = class
    inherit DependencyObject
Public Class VisualStateManager
Inherits DependencyObject
상속

예제

다음 예제에서는를 만들고 Rectangle VisualStateGroup 라는를 연결 된 CommonStates 속성에 추가 합니다 VisualStateManager.VisualStatesGroups .The following example creates a Rectangle and adds a VisualStateGroup named CommonStates to the VisualStateManager.VisualStatesGroups attached property. 이 예제에서는 MouseOver 에서 및 Normal VisualState 개체를 CommonStates 정의 합니다 VisualStateGroup .The example defines the MouseOver and NormalVisualState objects in the CommonStatesVisualStateGroup. 사용자가 마우스 포인터를 위로 이동 하면 Rectangle 빨간색에서 녹색으로 1 0.5 초 동안 변합니다.When the user moves the mouse pointer over the Rectangle, it changes from red to green over one half second. 사용자가 마우스를 사각형에서 멀리 이동 하면가 Grid 즉시 빨간색으로 바뀝니다.When the user moves the mouse away from the rectangle, the Grid immediately changes back to red. Normal상태는을 정의 하지 않습니다 Storyboard .Note that the Normal state does not define a Storyboard. Storyboard Rectangle 상태에서 상태로 전환 되는 경우 MouseOver Normal Storyboard 에 대 한 MouseOver 이 중지 되 고의 Color 속성이 SolidColorBrush red로 반환 되기 때문에가 필요 하지 않습니다.A Storyboard is not required because when the Rectangle transitions from the MouseOver state to the Normal state, the Storyboard for MouseOver is stopped and the Color property for the SolidColorBrush returns to red.

<Rectangle Name="rect" 
           Width="100" Height="100"
           MouseEnter="rect_MouseEvent" 
           MouseLeave="rect_MouseEvent">
  <VisualStateManager.VisualStateGroups>
    <VisualStateGroup Name="MouseStates">
      <VisualState Name="MouseEnter">
        <Storyboard>
          <ColorAnimation To="Green" 
                          Storyboard.TargetName="rectBrush" 
                          Storyboard.TargetProperty="Color"/>
        </Storyboard>
      </VisualState>
      <VisualState Name="MouseLeave" />
      <VisualStateGroup.Transitions>
        <VisualTransition To="MouseLeave" GeneratedDuration="00:00:00"/>

        <VisualTransition To="MouseEnter" GeneratedDuration="00:00:00.5">
          <VisualTransition.GeneratedEasingFunction>
            <ExponentialEase EasingMode="EaseOut" Exponent="10"/>
          </VisualTransition.GeneratedEasingFunction>
        </VisualTransition>

      </VisualStateGroup.Transitions>
    </VisualStateGroup>
  </VisualStateManager.VisualStateGroups>

  <Rectangle.Fill>
    <SolidColorBrush x:Name="rectBrush" Color="Red"/>
  </Rectangle.Fill>
</Rectangle>

다음 예제에서는 이전 예제에서 정의 된 이벤트 처리기를 보여 주고 GoToElementState 상태 간을 전환 하는 메서드를 호출 합니다.The following example shows the event handler that is defined in the previous example and calls the GoToElementState method to transition between states. 앞의 예제에 있는 사각형이의 일부 였으 면이 ControlTemplate 예제에서는 메서드를 호출 해야 GoToState 합니다.If the rectangle in the previous example was part of a ControlTemplate, the example would have to call the GoToState method.

private void rect_MouseEvent(object sender, MouseEventArgs e)
{
    if (rect.IsMouseOver)
    {
        VisualStateManager.GoToElementState(rect, "MouseEnter", true);
    }
    else
    {
        VisualStateManager.GoToElementState(rect, "MouseLeave", true);
    }
}
Private Sub rect_MouseEvent(ByVal sender As Object, ByVal e As MouseEventArgs)
    If rect.IsMouseOver Then
        VisualStateManager.GoToElementState(rect, "MouseEnter", True)
    Else
        VisualStateManager.GoToElementState(rect, "MouseLeave", True)
    End If
End Sub

설명

를 사용 하 여 컨트롤의 상태 VisualStateManager , 컨트롤이 특정 상태에 있을 때의 모양 및 컨트롤이 상태를 변경 하는 시기를 지정할 수 있습니다.The VisualStateManager enables you to specify states for a control, the appearance of a control when it is in a certain state, and when a control changes states. 예를 들어, 한 Button 를 누를 때 보다 누를 때 이와 약간 다르게 표시 해야 할 수 있습니다.For example, a Button might have a slightly different appearance when it is pressed than when it is not pressed. 두 개의 상태를 Button 정의 누를 때 해당 하 ("Pressed")이 아닐 때 및 ("Normal").Two states that the Button defines correspond to when it is pressed ("Pressed") and when it is not ("Normal"). 컨트롤이 상태일 때의 모양은에 의해 정의 됩니다 VisualState .The appearance of a control when it is in a state is defined by a VisualState. VisualState Storyboard 컨트롤이 해당 상태에 있을 때 컨트롤의 모양이 변경 되는 방법을 지정 하는 개체의 컬렉션을 포함 합니다.A VisualState contains a collection of Storyboard objects that specify how the control's appearance changes when the control is in that state. 컨트롤에 연결 된 속성을 설정 하 여 컨트롤에 시각적 상태를 추가 VisualStateManager.VisualStateGroups 합니다.You add visual states to a control by setting the VisualStateManager.VisualStateGroups attached property on the control. 각에는 VisualStateGroup VisualState 함께 사용할 수 없는 개체의 컬렉션이 포함 되어 있습니다.Each VisualStateGroup contains a collection of VisualState objects that are mutually exclusive. 즉, 컨트롤은 항상 각에서 정확히 하나의 상태에 VisualStateGroup 있습니다.That is, the control is always in exactly one state of in each VisualStateGroup.

VisualStateManager 사용 하 여 컨트롤이 특정 상태로 전환 되는 경우를 지정할 수도 있습니다.The VisualStateManager also enables you to specify when a control enters a specific state. 상태를 변경 하기 위해 호출 해야 하는 메서드는 시나리오에 따라 달라 집니다.The method that you should call to change states depends on your scenario. 에서를 사용 하는 컨트롤을 만드는 경우 VisualStateManager ControlTemplate 메서드를 호출 GoToState 합니다.If you create a control that uses the VisualStateManager in its ControlTemplate, call the GoToState method. 만드는 방법에 대 한 자세한 내용은 사용 하는 컨트롤에 대해를 VisualStateManager를 참조 하세요 모양을 사용자 지정할 수는 제어 된 만들기합니다.For more information about how to create controls that use the VisualStateManager, see Creating a Control That Has a Customizable Appearance. 외부에서를 사용 하는 경우 VisualStateManager ControlTemplate (예를 들어 또는의 단일 요소에서를 사용 하는 경우 VisualStateManager UserControl ) 메서드를 호출 GoToElementState 합니다.If you use the VisualStateManager outside of a ControlTemplate (for example, if you use a VisualStateManager in a UserControl or in a single element), call the GoToElementState method. 두 경우 모두는 VisualStateManager 관련 상태와 연결 된 storyboard를 적절 하 게 시작 및 중지 하는 데 필요한 논리를 수행 합니다.In either case, the VisualStateManager performs the logic that is required to appropriately start and stop the storyboards that are associated with the involved state. 예를 들어, 컨트롤에서 State1 State2 각각에 연결 된 스토리 보드를 포함 하는 및 상태를 정의 한다고 가정 합니다.For example, suppose that a control defines the states, State1 and State2, each of which has a storyboard associated with it. 컨트롤이에 State1 있고 또는에 전달 하는 State2 경우 GoToState GoToElementStateVisualStateManager 에서 storyboard를 시작 State2 하 고에서 storyboard를 중지 합니다 State1 .If the control is in State1 and you pass State2 to GoToState or GoToElementState, the VisualStateManager starts the storyboard in State2 and stops the storyboard in State1.

에 포함 된 컨트롤 WPF(Windows Presentation Foundation)Windows Presentation Foundation (WPF) 은를 사용 VisualStateManager 하 여 시각적 상태를 변경 합니다.Controls that are included with WPF(Windows Presentation Foundation)Windows Presentation Foundation (WPF) use the VisualStateManager to change visual states. ControlTemplate 포함 된 컨트롤에 대 한를 만들 때 WPFWPF VisualState 컨트롤의 ControlTemplate 모양을 특정 상태로 지정 하기 위해 개체를 추가할 수 있습니다.When you create a ControlTemplate for a control that is included with WPFWPF, you can add VisualState objects to the control's ControlTemplate to specify the control's appearance in a certain state. 포함 된 컨트롤에 대 한 시각적 상태의 이름을 찾으려면 WPFWPF를 참조 하세요 Control 스타일 및 템플릿합니다.To find the names of the visual states for the controls that are included with WPFWPF, see Control Styles and Templates. 컨트롤의 논리는 상태 간 전환을 처리 하므로 새에서 개체를 정의 하는 것 외에 다른 작업을 수행할 필요가 없습니다 VisualState ControlTemplate .The control's logic handles transitioning between states, so you do not need to do anything other than define the VisualState objects in the new ControlTemplate. 기존 컨트롤에 대 한 컨트롤 템플릿을 만드는 방법에 대 한 자세한 내용은 ControlTemplate를 만들어 기존 컨트롤의 모양 사용자 지정을 참조 하세요.For more information about how to create control templates for existing controls, see Customizing the Appearance of an Existing Control by Creating a ControlTemplate.

상태 간 전환을 위한 고유한 논리를 구현 하려는 경우에서 상속 하 고, 메서드를 VisualStateManager 재정의 하 GoToStateCore 고, VisualStateManager.CustomVisualStateManager 사용자 지정 논리를 사용 하는 컨트롤에 연결 된 속성을 설정 해야 합니다.If you want to implement your own logic for transitioning between states, you must inherit from VisualStateManager, override the GoToStateCore method, and set the VisualStateManager.CustomVisualStateManager attached property on the control that uses the custom logic.

생성자

VisualStateManager()

VisualStateManager 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the VisualStateManager class.

필드

CustomVisualStateManagerProperty

CustomVisualStateManager 종속성 속성을 나타냅니다.Identifies the CustomVisualStateManager dependency property.

VisualStateGroupsProperty

VisualStateGroups 종속성 속성을 나타냅니다.Identifies the VisualStateGroups dependency property.

속성

DependencyObjectType

이 인스턴스의 CLRCLR 형식을 래핑하는 DependencyObjectType을 가져옵니다.Gets the DependencyObjectType that wraps the CLRCLR type of this instance.

(다음에서 상속됨 DependencyObject)
Dispatcher

Dispatcher와 연결된 DispatcherObject를 가져옵니다.Gets the Dispatcher this DispatcherObject is associated with.

(다음에서 상속됨 DispatcherObject)
IsSealed

이 인스턴스가 현재 봉인되어 있는지(읽기 전용인지) 여부를 나타내는 값을 가져옵니다.Gets a value that indicates whether this instance is currently sealed (read-only).

(다음에서 상속됨 DependencyObject)

연결된 속성

CustomVisualStateManager

컨트롤의 상태를 전환하는 VisualStateManager 개체를 가져오거나 설정합니다.Gets or sets the VisualStateManager object that transitions between the states of a control.

VisualStateGroups

VisualStateGroup 개체의 컬렉션을 가져오거나 설정합니다.Gets or sets a collection of VisualStateGroup objects.

메서드

CheckAccess()

호출 스레드가 이 DispatcherObject에 액세스할 수 있는지 여부를 확인합니다.Determines whether the calling thread has access to this DispatcherObject.

(다음에서 상속됨 DispatcherObject)
ClearValue(DependencyProperty)

속성의 로컬 값을 지웁니다.Clears the local value of a property. 지울 속성이 DependencyProperty 식별자에서 지정됩니다.The property to be cleared is specified by a DependencyProperty identifier.

(다음에서 상속됨 DependencyObject)
ClearValue(DependencyPropertyKey)

읽기 전용 속성의 로컬 값을 지웁니다.Clears the local value of a read-only property. 선언할 속성이 DependencyPropertyKey에서 지정됩니다.The property to be cleared is specified by a DependencyPropertyKey.

(다음에서 상속됨 DependencyObject)
CoerceValue(DependencyProperty)

지정된 종속성 속성의 값을 강제 변환합니다.Coerces the value of the specified dependency property. 호출하는 DependencyObject에 있으므로 이 작업은 종속성 속성의 속성 메타데이터에 지정된 CoerceValueCallback 함수를 호출하여 수행합니다.This is accomplished by invoking any CoerceValueCallback function specified in property metadata for the dependency property as it exists on the calling DependencyObject.

(다음에서 상속됨 DependencyObject)
Equals(Object)

제공된 DependencyObject가 현재 DependencyObject에 해당하는지 여부를 확인합니다.Determines whether a provided DependencyObject is equivalent to the current DependencyObject.

(다음에서 상속됨 DependencyObject)
GetCustomVisualStateManager(FrameworkElement)

CustomVisualStateManager 연결된 속성을 가져옵니다.Gets the CustomVisualStateManager attached property.

GetHashCode()

DependencyObject의 해시 코드를 가져옵니다.Gets a hash code for this DependencyObject.

(다음에서 상속됨 DependencyObject)
GetLocalValueEnumerator()

DependencyObject에 대해 로컬로 값을 설정한 종속성 속성을 확인하기 위한 특수 열거자를 만듭니다.Creates a specialized enumerator for determining which dependency properties have locally set values on this DependencyObject.

(다음에서 상속됨 DependencyObject)
GetType()

현재 인스턴스의 Type을 가져옵니다.Gets the Type of the current instance.

(다음에서 상속됨 Object)
GetValue(DependencyProperty)

DependencyObject의 인스턴스에서 종속성 속성의 현재 유효 값을 반환합니다.Returns the current effective value of a dependency property on this instance of a DependencyObject.

(다음에서 상속됨 DependencyObject)
GetVisualStateGroups(FrameworkElement)

VisualStateGroups 연결된 속성을 가져옵니다.Gets the VisualStateGroups attached property.

GoToElementState(FrameworkElement, String, Boolean)

요소를 두 상태 간에 전환합니다.Transitions the element between two states. 컨트롤에서 정의하는 대신 애플리케이션에서 정의하는 상태를 변환하려면 이 메서드를 사용합니다.Use this method to transition states that are defined by an application, rather than defined by a control.

GoToState(FrameworkElement, String, Boolean)

두 상태 간의 컨트롤을 전환합니다.Transitions the control between two states. 이 메서드를 사용하여 ControlTemplate이 포함된 컨트롤에서 상태를 전환합니다.Use this method to transition states on control that has a ControlTemplate.

GoToStateCore(FrameworkElement, FrameworkElement, String, VisualStateGroup, VisualState, Boolean)

컨트롤을 상태 간에 전환합니다.Transitions a control between states.

InvalidateProperty(DependencyProperty)

지정된 종속성 속성의 유효 값을 다시 계산합니다.Re-evaluates the effective value for the specified dependency property.

(다음에서 상속됨 DependencyObject)
MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.Creates a shallow copy of the current Object.

(다음에서 상속됨 Object)
OnPropertyChanged(DependencyPropertyChangedEventArgs)

DependencyObject에서 종속성 속성의 유효 값이 업데이트될 때마다 호출됩니다.Invoked whenever the effective value of any dependency property on this DependencyObject has been updated. 변경된 특정 종속성 속성이 이벤트 데이터에서 보고됩니다.The specific dependency property that changed is reported in the event data.

(다음에서 상속됨 DependencyObject)
RaiseCurrentStateChanged(VisualStateGroup, VisualState, VisualState, FrameworkElement, FrameworkElement)

지정한 CurrentStateChanging 개체에서 VisualStateGroup 이벤트를 발생시킵니다.Raises the CurrentStateChanging event on the specified VisualStateGroup object.

RaiseCurrentStateChanging(VisualStateGroup, VisualState, VisualState, FrameworkElement, FrameworkElement)

지정한 CurrentStateChanging 개체에서 VisualStateGroup 이벤트를 발생시킵니다.Raises the CurrentStateChanging event on the specified VisualStateGroup object.

ReadLocalValue(DependencyProperty)

종속성 속성의 로컬 값을 반환합니다(있는 경우).Returns the local value of a dependency property, if it exists.

(다음에서 상속됨 DependencyObject)
SetCurrentValue(DependencyProperty, Object)

해당 값 소스를 변경하지 않고 종속성 속성의 값을 설정합니다.Sets the value of a dependency property without changing its value source.

(다음에서 상속됨 DependencyObject)
SetCustomVisualStateManager(FrameworkElement, VisualStateManager)

CustomVisualStateManager 연결된 속성을 설정합니다.Sets the CustomVisualStateManager attached property.

SetValue(DependencyProperty, Object)

지정된 종속성 속성 식별자를 가진 종속성 속성의 로컬 값을 설정합니다.Sets the local value of a dependency property, specified by its dependency property identifier.

(다음에서 상속됨 DependencyObject)
SetValue(DependencyPropertyKey, Object)

종속성 속성의 DependencyPropertyKey 식별자에 의해 지정된 읽기 전용 종속성 속성의 로컬 값을 설정합니다.Sets the local value of a read-only dependency property, specified by the DependencyPropertyKey identifier of the dependency property.

(다음에서 상속됨 DependencyObject)
ShouldSerializeProperty(DependencyProperty)

serialization 프로세스에서 지정된 종속성 속성의 값을 직렬화해야 하는지 여부를 나타내는 값을 반환합니다.Returns a value that indicates whether serialization processes should serialize the value for the provided dependency property.

(다음에서 상속됨 DependencyObject)
ToString()

현재 개체를 나타내는 문자열을 반환합니다.Returns a string that represents the current object.

(다음에서 상속됨 Object)
VerifyAccess()

호출 스레드에서 이 DispatcherObject에 액세스할 수 있는지 확인합니다.Enforces that the calling thread has access to this DispatcherObject.

(다음에서 상속됨 DispatcherObject)

적용 대상