1

在我的 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 调整,但似乎无法GroupStyle在 VisualState 中设置不同的值或更改相应的模板。有什么建议么?

4

3 回答 3

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你可以如果你愿意,可以下载整个项目。再说一次,这不是我会做的。

于 2014-01-03T17:20:08.317 回答
0

是什么阻止您使用不同的 Gridview 进行纵向定位?您可以检测当前方向以隐藏/显示适当的内容,有关如何执行此操作的更多信息,请参阅我的博客文章http://www.zubairahmed.net/?p=1032

于 2013-10-04T18:35:21.380 回答
0

不幸的是,即使是现在,经过这么多年,在 W10 UWP 上,您似乎也无法做到这一点。你必须求助于代码:

GridView.GroupStyle.Clear();

清除或清除

GridView.GroupStyle.Clear();
GridView.GroupStyle.Add((GroupStyle)Resources["YourGroupStyleKey"]);

VisualStateManager.GoToState()无论如何,从您使用 your 的代码中进行设置。

于 2020-12-04T12:37:11.070 回答