在我的Windows 8.1 WinRT / XAML应用中,我有一个分组GridView
,其中包含相应的GroupStyle
:
<GridView ItemsSource="{Binding Source={StaticResource groupedViewSource}}">
...
<GridView.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
...
</DataTemplate>
</GroupStyle.HeaderTemplate>
<GroupStyle.Panel>
<ItemsPanelTemplate>
<VariableSizedWrapGrid
Style="{StaticResource NormalWrapGridStyle}" />
</ItemsPanelTemplate>
</GroupStyle.Panel>
</GroupStyle>
</GridView.GroupStyle>
</GridView>
现在这是全屏视图的版本。我想要的是调整GridView的UI以获得更小的显示宽度,例如:在纵向模式下。因此,我希望将GroupStyle.HeaderTemplate
调整为较小的标题,将GroupStyle.Panel
调整为单个GridView组的边距较小。
通常情况下,我使用不同的VisualState进行此类UI调整,但似乎无法在VisualState中设置不同的GroupStyle
或更改相应的模板。有什么建议吗?
答案 0 :(得分:0)
什么阻止您使用不同的Gridview进行纵向方向?您可以检测隐藏/显示相应内容的当前方向,有关如何执行此操作的详细信息,请参阅我的博客文章http://www.zubairahmed.net/?p=1032
答案 1 :(得分:0)
我和@Zubair就这个问题。如果您可以为每个方向制作多个布局,则总体上可以获得更好的解决方案。如果您愿意,可以将它们抽象为用户控件。如果您愿意,可以重复使用数据模板。但是在单个布局中处理方向和监视器缩放是不必要的过度复杂性。
阅读本文:http://blog.jerrynixon.com/2013/12/the-two-ways-to-handle-orientation-in.html
如果您必须按照您的需要进行操作(我不建议您这样做),您可以查看此解决方案:http://xaml.codeplex.com/SourceControl/latest#MVA/201311_Blend/XamlSpace/ViewModels/MainPageViewModel.cs如果您愿意,可以下载整个项目。再说一遍,这不是我要做的。
答案 2 :(得分:0)
不幸的是,即使经过了这么多年,现在看起来仍然无法在W10 UWP上做到这一点。您必须求助于代码:
GridView.GroupStyle.Clear();
清除或
GridView.GroupStyle.Clear();
GridView.GroupStyle.Add((GroupStyle)Resources["YourGroupStyleKey"]);
无论如何都要从使用VisualStateManager.GoToState()
的代码中进行设置。