[template10]中的新visualstate

时间:2017-01-31 02:47:28

标签: uwp uwp-xaml template10

如何修改模板10中默认视觉状态的条件?

我希望能够区分手机上的横向模式与PC或平板电脑上的窗口。

通过将手机置于横向模式来触发NormalMinWidth。问题是横向模式下的手机屏幕高度可能远低于平板电脑或个人电脑。

我希望手机上的NormalMinWidth与PC或平板电脑的布局不同。例如,我想添加另一个查看最小屏幕高度的视觉状态NormalMinWidthMinHeight。

我们非常感谢任何建议。

1 个答案:

答案 0 :(得分:1)

您需要实现允许动态更改状态的代码。

例如,如果您要根据当前视图的方向更改状态。您需要为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);
    }
}