다음을 통해 공유


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 만들고 VisualStateManager.VisualStatesGroups 연결된 속성에 CommonStates 명명된 VisualStateGroup 추가합니다. 이 예제에서는 CommonStatesVisualStateGroupMouseOverNormalVisualState 개체를 정의합니다. 마우스 포인터를 Rectangle위로 이동하면 1초 동안 빨간색에서 녹색으로 변경됩니다. 사용자가 마우스를 사각형에서 멀리 이동하면 Grid 즉시 다시 빨간색으로 변경됩니다. Normal 상태는 Storyboard정의하지 않습니다. Storyboard 필요하지 않습니다. RectangleMouseOver 상태에서 Normal 상태로 전환되면 MouseOver 대한 Storyboard 중지되고 SolidColorBrushColor 속성이 빨간색으로 반환되기 때문입니다.

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

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

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

생성자

VisualStateManager()

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

필드

CustomVisualStateManagerProperty

CustomVisualStateManager 종속성 속성을 식별합니다.

VisualStateGroupsProperty

VisualStateGroups 종속성 속성을 식별합니다.

속성

DependencyObjectType

이 인스턴스의 CLR 형식을 래핑하는 DependencyObjectType 가져옵니다.

(다음에서 상속됨 DependencyObject)
Dispatcher

DispatcherObject 연결된 Dispatcher 가져옵니다.

(다음에서 상속됨 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)

지정된 VisualStateGroup 개체에서 CurrentStateChanging 이벤트를 발생합니다.

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

지정된 VisualStateGroup 개체에서 CurrentStateChanging 이벤트를 발생합니다.

ReadLocalValue(DependencyProperty)

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

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

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

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

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

SetValue(DependencyProperty, Object)

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

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

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

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

serialization 프로세스가 제공된 종속성 속성의 값을 serialize해야 하는지 여부를 나타내는 값을 반환합니다.

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

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

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

호출 스레드가 이 DispatcherObject액세스할 수 있도록 합니다.

(다음에서 상속됨 DispatcherObject)

적용 대상