VisualStateManager 클래스

정의

컨트롤의 상태 간 전환에 사용되는 상태 및 논리를 관리합니다.

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

예제

다음 예제에서는 를 만들고 Rectangle 라는 를 CommonStates 연결된 속성에 VisualStateManager.VisualStatesGroups 추가합니다VisualStateGroup. 이 예제에서는 의 MouseOverNormalVisualState 개체를 CommonStatesVisualStateGroup정의합니다. 사용자가 마우스 포인터를 위로 Rectangle이동하면 1초 동안 빨간색에서 녹색으로 변경됩니다. 사용자가 직사각형에서 마우스를 이동하면 즉시 Grid 다시 빨간색으로 변경됩니다. 상태는 를 Normal 정의 Storyboard하지 않습니다. Storyboard 가 상태에서 상태로 NormalMouseOverStoryboard 전환 MouseOver 될 때 Rectangle 의 가 중지되고 Color 의 속성 SolidColorBrush 이 빨간색으로 반환되기 때문에 은 필요하지 않습니다.

<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 호출하여 상태 간에 전환합니다. 이전 예제의 사각형이 의 ControlTemplate일부인 경우 예제에서는 메서드를 GoToState 호출해야 합니다.

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 사용하면 컨트롤의 상태, 컨트롤이 특정 상태일 때의 모양 및 컨트롤 상태가 변경되는 경우를 지정할 수 있습니다. 예를 들어, 한 Button 를 누를 때 보다 누를 때 이와 약간 다르게 표시 해야 할 수 있습니다. 두 개의 상태를 Button 정의 누를 때 해당 하 ("Pressed")이 아닐 때 및 ("Normal"). 컨트롤이 상태에 있을 때의 모양은 에 의해 VisualState정의됩니다. VisualState 에는 컨트롤이 Storyboard 해당 상태에 있을 때 컨트롤의 모양이 변경되는 방식을 지정하는 개체 컬렉션이 포함되어 있습니다. 컨트롤에서 연결된 속성을 설정 VisualStateManager.VisualStateGroups 하여 컨트롤에 시각적 상태를 추가합니다. 각각 VisualStateGroup 에는 상호 배타적인 개체 컬렉션 VisualState 이 포함되어 있습니다. 즉, 컨트롤은 항상 각 VisualStateGroup의 정확히 하나의 상태에 있습니다.

VisualStateManager 또한 을 사용하면 컨트롤이 특정 상태에 들어갈 때를 지정할 수 있습니다. 상태를 변경하기 위해 호출해야 하는 메서드는 시나리오에 따라 달라집니다. 에서 을 사용하는 컨트롤을 VisualStateManagerControlTemplate만드는 경우 메서드를 호출합니다 GoToState . 만드는 방법에 대 한 자세한 내용은 사용 하는 컨트롤에 대해를 VisualStateManager를 참조 하세요 모양을 사용자 지정할 수는 제어 된 만들기합니다. 의 외부를 VisualStateManager 사용하는 경우(예: 또는 단일 요소에서 을 UserControl 사용하는 VisualStateManager 경우) 메서드를 호출합니다GoToElementState.ControlTemplate 두 경우 모두 은 VisualStateManager 관련 상태와 연결된 스토리보드를 적절하게 시작하고 중지하는 데 필요한 논리를 수행합니다. 예를 들어 컨트롤이 각각 연결된 스토리보드가 있는 상태 State1State2를 정의한다고 가정합니다. 컨트롤이 에 State1 있고 또는 GoToElementStateGoToState 전달 State2 하면 는 VisualStateManager 에서 State2 스토리보드를 시작하고 에서 State1스토리보드를 중지합니다.

WPF(Windows Presentation Foundation)에 포함된 컨트롤은 를 VisualStateManager 사용하여 시각적 상태를 변경합니다. WPF에 포함된 컨트롤에 대한 을 ControlTemplate 만들 때 컨트롤에 ControlTemplate 개체를 추가하여 VisualState 컨트롤의 모양을 특정 상태로 지정할 수 있습니다. WPF에 포함된 컨트롤에 대한 시각적 상태의 이름을 찾으려면 컨트롤 스타일 및 템플릿을 참조하세요. 컨트롤의 논리는 상태 간 전환을 처리하므로 새 ControlTemplate에서 개체를 정의하는 VisualState 것 외에는 아무 작업도 수행할 필요가 없습니다. 기존 컨트롤에 대한 컨트롤 템플릿을 만드는 방법에 대한 자세한 내용은 ControlTemplate을 만들어 기존 컨트롤의 모양 사용자 지정을 참조하세요.

상태 간 전환을 위해 고유한 논리를 구현하려면 에서 VisualStateManager상속하고, 메서드를 재정의 GoToStateCore 하고, 사용자 지정 논리를 사용하는 컨트롤에 연결된 속성을 설정 VisualStateManager.CustomVisualStateManager 해야 합니다.

생성자

VisualStateManager()

VisualStateManager 클래스의 새 인스턴스를 초기화합니다.

필드

CustomVisualStateManagerProperty

CustomVisualStateManager 종속성 속성을 나타냅니다.

VisualStateGroupsProperty

VisualStateGroups 종속성 속성을 나타냅니다.

속성

DependencyObjectType

DependencyObjectType 이 instance CLR 형식을 래핑하는 을 가져옵니다.

(다음에서 상속됨 DependencyObject)
Dispatcher

Dispatcher와 연결된 DispatcherObject를 가져옵니다.

(다음에서 상속됨 DispatcherObject)
IsSealed

이 인스턴스가 현재 봉인되어 있는지(읽기 전용인지) 여부를 나타내는 값을 가져옵니다.

(다음에서 상속됨 DependencyObject)

연결된 속성

CustomVisualStateManager

컨트롤의 상태를 전환하는 VisualStateManager 개체를 가져오거나 설정합니다.

VisualStateGroups

VisualStateGroup 개체의 컬렉션을 가져오거나 설정합니다.

메서드

CheckAccess()

호출 스레드가 이 DispatcherObject에 액세스할 수 있는지 여부를 확인합니다.

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

속성의 로컬 값을 지웁니다. 지울 속성이 DependencyProperty 식별자에서 지정됩니다.

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

읽기 전용 속성의 로컬 값을 지웁니다. 선언할 속성이 DependencyPropertyKey에서 지정됩니다.

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

지정된 종속성 속성의 값을 강제 변환합니다. 호출하는 DependencyObject에 있으므로 이 작업은 종속성 속성의 속성 메타데이터에 지정된 CoerceValueCallback 함수를 호출하여 수행합니다.

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

제공된 DependencyObject가 현재 DependencyObject에 해당하는지 여부를 확인합니다.

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

CustomVisualStateManager 연결된 속성을 가져옵니다.

GetHashCode()

DependencyObject의 해시 코드를 가져옵니다.

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

DependencyObject에 대해 로컬로 값을 설정한 종속성 속성을 확인하기 위한 특수 열거자를 만듭니다.

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

현재 인스턴스의 Type을 가져옵니다.

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

DependencyObject의 인스턴스에서 종속성 속성의 현재 유효 값을 반환합니다.

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

VisualStateGroups 연결된 속성을 가져옵니다.

GoToElementState(FrameworkElement, String, Boolean)

요소를 두 상태 간에 전환합니다. 컨트롤에서 정의하는 대신 애플리케이션에서 정의하는 상태를 변환하려면 이 메서드를 사용합니다.

GoToState(FrameworkElement, String, Boolean)

두 상태 간의 컨트롤을 전환합니다. 이 메서드를 사용하여 ControlTemplate이 포함된 컨트롤에서 상태를 전환합니다.

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

컨트롤을 상태 간에 전환합니다.

InvalidateProperty(DependencyProperty)

지정된 종속성 속성의 유효 값을 다시 계산합니다.

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

현재 Object의 단순 복사본을 만듭니다.

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

DependencyObject에서 종속성 속성의 유효 값이 업데이트될 때마다 호출됩니다. 변경된 특정 종속성 속성이 이벤트 데이터에서 보고됩니다.

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

지정한 CurrentStateChanging 개체에서 VisualStateGroup 이벤트를 발생시킵니다.

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

지정한 CurrentStateChanging 개체에서 VisualStateGroup 이벤트를 발생시킵니다.

ReadLocalValue(DependencyProperty)

종속성 속성의 로컬 값을 반환합니다(있는 경우).

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

해당 값 소스를 변경하지 않고 종속성 속성의 값을 설정합니다.

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

CustomVisualStateManager 연결된 속성을 설정합니다.

SetValue(DependencyProperty, Object)

지정된 종속성 속성 식별자를 가진 종속성 속성의 로컬 값을 설정합니다.

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

종속성 속성의 DependencyPropertyKey 식별자에 의해 지정된 읽기 전용 종속성 속성의 로컬 값을 설정합니다.

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

serialization 프로세스에서 지정된 종속성 속성의 값을 직렬화해야 하는지 여부를 나타내는 값을 반환합니다.

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

현재 개체를 나타내는 문자열을 반환합니다.

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

호출 스레드에서 이 DispatcherObject에 액세스할 수 있는지 확인합니다.

(다음에서 상속됨 DispatcherObject)

적용 대상