VisualStateManager 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
컨트롤의 상태 간 전환에 대한 상태 및 논리를 관리합니다.
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 추가합니다. 이 예제에서는 CommonStates
VisualStateGroupMouseOver
및 Normal
VisualState 개체를 정의합니다. 마우스 포인터를 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 관련 상태와 연결된 스토리보드를 적절하게 시작하고 중지하는 데 필요한 논리를 수행합니다. 예를 들어 컨트롤이 상태, State1
및 State2
정의한다고 가정합니다. 각각에는 스토리보드가 연결되어 있습니다. 컨트롤이 State1
GoToState 또는 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 개체의 컬렉션을 가져오거나 설정합니다. |
메서드
적용 대상
.NET