c# – GridView水平方向的FooterTemplate
发布时间:2020-12-15 22:09:15 所属栏目:百科 来源:网络整理
导读:我开发了Win8.1通用应用程序. 我正在使用带有WrapGrid的GridView作为ItemsPanel.垂直滚动被禁用,用户只需要水平滚动.我正在使用增量源集合作为ItemsSource,当用户滚动到GridView的末尾时,会动态添加新项目.除了一件事,一切都很好.我想使进度指示器右对齐,并
我开发了Win8.1通用应用程序.
我正在使用带有WrapGrid的GridView作为ItemsPanel.垂直滚动被禁用,用户只需要水平滚动.我正在使用增量源集合作为ItemsSource,当用户滚动到GridView的末尾时,会动态添加新项目.除了一件事,一切都很好.我想使进度指示器右对齐,并且在加载新页面时它必须变得可见.我尝试为网格视图设置页脚模板,但它是隐藏的(bc可能默认页脚添加在itemspanel下面或其他任何内容). 这是我用来为GridView定义控件模板并将Footer设置为正确的代码. <GridView.Template> <ControlTemplate TargetType="GridView"> <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}"> <ScrollViewer x:Name="ScrollViewer" AutomationProperties.AccessibilityView="Raw" BringIntoViewOnFocusChange="{TemplateBinding ScrollViewer.BringIntoViewOnFocusChange}" HorizontalScrollMode="{TemplateBinding ScrollViewer.HorizontalScrollMode}" HorizontalScrollBarVisibility="{TemplateBinding ScrollViewer.HorizontalScrollBarVisibility}" IsHorizontalRailEnabled="{TemplateBinding ScrollViewer.IsHorizontalRailEnabled}" IsHorizontalScrollChainingEnabled="{TemplateBinding ScrollViewer.IsHorizontalScrollChainingEnabled}" IsVerticalScrollChainingEnabled="{TemplateBinding ScrollViewer.IsVerticalScrollChainingEnabled}" IsVerticalRailEnabled="{TemplateBinding ScrollViewer.IsVerticalRailEnabled}" IsDeferredScrollingEnabled="{TemplateBinding ScrollViewer.IsDeferredScrollingEnabled}" TabNavigation="{TemplateBinding TabNavigation}" VerticalScrollBarVisibility="{TemplateBinding ScrollViewer.VerticalScrollBarVisibility}" VerticalScrollMode="{TemplateBinding ScrollViewer.VerticalScrollMode}" ZoomMode="{TemplateBinding ScrollViewer.ZoomMode}"> <StackPanel Orientation="Horizontal"> <ItemsPresenter HeaderTemplate="{TemplateBinding HeaderTemplate}" Header="{TemplateBinding Header}" HeaderTransitions="{TemplateBinding HeaderTransitions}" Padding="{TemplateBinding Padding}"/> <ContentControl Transitions="{TemplateBinding FooterTransitions}" ContentTemplate="{TemplateBinding FooterTemplate}" Content="{TemplateBinding Footer}"/> </StackPanel> </ScrollViewer> </Border> </ControlTemplate> </GridView.Template> 然后我将ProgressRing设置为页脚模板. <GridView.FooterTemplate> <DataTemplate> <ProgressRing VerticalAlignment="Stretch" HorizontalAlignment="Stretch" IsActive="{Binding IsBusy}" Margin="0,24" Width="50" Height="50" Foreground="{StaticResource LightGreyBorderBrush}" Style="{StaticResource ProgressRingStyle}" /> </DataTemplate> </GridView.FooterTemplate> 但是当我试图滚动时 – 事情变得疯狂. GridView总是一个接一个地调用下一页加载,但是滚动位置几乎为0(在GridView的开头).所以我得到无限页面加载. 谁能帮我这个?提前谢谢了! 编辑:我创建了一个小样本来重现.请看一下.这是link. 解决方法
支持右对齐的FooterTemplate开箱即用.只需使用ItemsWrapGrid(默认情况下在GridView中使用)而不是使用WrapGrid作为ItemsPanel.您也不需要重新定义模板.以下是您的示例中的工作代码:
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <GridView x:Name="TestGridView"> <GridView.ItemsPanel> <ItemsPanelTemplate> <ItemsWrapGrid ItemHeight="100" Orientation="Vertical" MaximumRowsOrColumns="5" /> </ItemsPanelTemplate> </GridView.ItemsPanel> <GridView.ItemTemplate> <DataTemplate> <Border Background="DarkSlateGray" Height="100" Width="100" Margin="20"> <TextBlock Foreground="#FFFFFF" Text="{Binding Number}" /> </Border> </DataTemplate> </GridView.ItemTemplate> <GridView.FooterTemplate> <DataTemplate> <ProgressRing IsActive="True" Margin="0,24" Width="50" Height="50" /> </DataTemplate> </GridView.FooterTemplate> </GridView> </Grid> 请注意,每次向右滚动时都会加载2页,因为GridView认为一页不够. 希望这可以帮助. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |