我正在使用带有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认为一页不够.
希望这可以帮助.
总结以上是内存溢出为你收集整理的c# – GridView水平方向的FooterTemplate全部内容,希望文章能够帮你解决c# – GridView水平方向的FooterTemplate所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)