【问题标题】:VisualStateManager: how the page is aware of initial VisualStateVisualStateManager:页面如何知道初始 VisualState
【发布时间】:2013-09-30 09:11:17
【问题描述】:

我对@9​​87654321@ 在Windows 应用商店应用程序 中的工作存在疑问...

假设这个示例页面:

<common:LayoutAwarePage x:Name="pageRoot">
    <Grid Style="{StaticResource LayoutRootStyle}">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="400" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>
        <ListView Grid.Column="0"
                  x:Name="testElement" />
        <Grid Grid.Column="1" />
    </Grid>
<common:LayoutAwarePage/>

我声明下一个VisualStateManager 行为,并带有一个示例VisualState

<VisualStateManager.VisualStateGroups>
    <VisualStateGroup x:Name="ApplicationViewStates">
        <VisualState x:Name="Snapped">
            <Storyboard>
                <ObjectAnimationUsingKeyFrames Storyboard.TargetName="testElement"
                                               Storyboard.TargetProperty="Visibility">
                    <DiscreteObjectKeyFrame KeyTime="0"
                                            Value="Collapsed" />
                </ObjectAnimationUsingKeyFrames>
            </Storyboard>
        </VisualState>
    </VisualStateGroup>
</VisualStateManager.VisualStateGroups>

现在我的问题是:

  1. 应用程序如何确定“状态”(我的意思是属性的值)是我在页面的 XAML 声明中使用的那个?
  2. 我是否需要明确设置页面的“初始”值 - 例如 - FullScreenLandscapeOrWide VisualState
  3. 页面是否可能以不同的 VisualState“状态”(不是 FullScreenLandscapeOrWide)开始(可能使用其他屏幕分辨率或特定设备),如果我不声明 FullScreenLandscapeOrWide VisualState(初始状态)会给我带来问题?

提前感谢您的澄清...

【问题讨论】:

    标签: windows-store-apps winrt-xaml visualstatemanager visualstates


    【解决方案1】:

    所有的事情都发生在LayoutAwarePage。查看Visual state switching 区域,在页面加载时调用StartLayoutUpdates 事件。它决定了应用程序当前的视觉状态是什么,您不需要在每个页面中显式添加。当应用在特定状态下打开时,它可以在特定视觉状态下切换控件。

    【讨论】:

      猜你喜欢
      • 2016-09-27
      • 1970-01-01
      • 1970-01-01
      • 2015-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-25
      • 1970-01-01
      相关资源
      最近更新 更多