【发布时间】:2015-12-24 05:19:31
【问题描述】:
响应式 UI,我知道 VisualStateManager 可以完成这项工作。但我不知道 怎么办
在宽模式下,它有两列。第一列显示列表,第二列显示同一页面中的内容
在窄模式下,它只在页面中一次显示一件事,并且导航。就像 Win10 邮件应用一样。
非常感谢
【问题讨论】:
标签: windows-runtime windows-store-apps windows-store windows-dev-center
响应式 UI,我知道 VisualStateManager 可以完成这项工作。但我不知道 怎么办
在宽模式下,它有两列。第一列显示列表,第二列显示同一页面中的内容
在窄模式下,它只在页面中一次显示一件事,并且导航。就像 Win10 邮件应用一样。
非常感谢
【问题讨论】:
标签: windows-runtime windows-store-apps windows-store windows-dev-center
这是一个 XAML 代码:
<Grid Background="White">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="VisualStateGroup">
<VisualState x:Name="VisualStateNarrow">
<VisualState.Setters>
<Setter Target="emailDetails.(UIElement.Visibility)" Value="Collapsed"/>
<Setter Target="emailsList.(Grid.ColumnSpan)" Value="2"/>
</VisualState.Setters>
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="1"/>
</VisualState.StateTriggers>
</VisualState>
<VisualState x:Name="VisualStateExtended">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="700"/>
</VisualState.StateTriggers>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="340" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<!-- Emails List -->
<Grid x:Name="emailsList" Background="LightBlue" >
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="Nothing to show!" />
</Grid>
<!-- Email Details -->
<Grid Grid.Column="1" x:Name="emailDetails" Background="Blue" >
<TextBlock HorizontalAlignment="Center" Foreground="White" VerticalAlignment="Center" Text="Select email to show!" />
</Grid>
</Grid>
我已将“700 px”设置为扩展状态的最小宽度,您可以通过以下方式更改它:<AdaptiveTrigger MinWindowWidth="700"/>
【讨论】:
VisualStateExtended 没有VisualState.Setters,但它确实有效。