동적으로 상태를 변경할 수있는 코드를 구현해야합니다.
예를 들어, 현재보기의 방향에 따라 상태를 변경하려는 경우. OrientationChanged 이벤트의 이벤트 핸들러를 구현하고 VisualStateManager 클래스의 GoToState 메소드를 사용해야합니다.
참조 다음 코드 샘플을 참조하십시오 :
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="AdaptiveVisualStateGroup">
<VisualState x:Name="VisualMinWidthHeight">
<VisualState.Setters>
<Setter Target="stateTextBox.Text" Value="Visual Min Width Height" />
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<TextBlock x:Name="stateTextBox" Text="Current Visual State" />
DisplayInformation.GetForCurrentView().OrientationChanged += MainPage_OrientationChanged;
private void MainPage_OrientationChanged(DisplayInformation info, object args)
{
Debug.WriteLine("orientation: " + info.CurrentOrientation);
if (info.CurrentOrientation == DisplayOrientations.LandscapeFlipped || info.CurrentOrientation == DisplayOrientations.Landscape)
{
VisualStateManager.GoToState(this, "VisualMinWidthHeight", true);
}
}
감사를 당신의 대답. 나는 그 질문을 잘 설명 해준다고 생각하지 않는다. Template10 프레임 워크에서 VisualStateManager.GoToState를 호출하는 코드는 어디에 있습니까? 이것을 연장 할 수 있습니까? 시각적 인 상태 변경을 수신하고 GotoState를 호출하기 위해 각 페이지에 코드를 넣고 싶지 않습니다. 나는 이것이 부트 스트 래퍼에 있을지 모르지만 나는 거기서 그것을 보지 못했다. – Sully
@Sully 괜찮습니다. 위의 코드는 단순한 해결책이나 제안이었습니다. 그것은 단지 당신의 참고 용입니다. [StateTriggerBase] (https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.statetriggerbase.aspx)를 확장하여 사용자 정의 트리거를 만들고 StateTriggers 내에서 사용할 수 있습니다 재산. [State triggers sample] (https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/XamlStateTriggers)은 사용자 정의 트리거를 만드는 방법을 알려줍니다. 자세한 내용은 참조 할 수 있습니다. –
감사 Xavier – Sully