ISupportIncrementalLoading从下到上

Dab*_*uto 5 c# xaml windows-8

ISupportIncrementalLoading在WinRT中实现了增量加载ListView,它运行得很好.问题是新项目被添加到列表底部,看到更多项目,我需要下去.我需要的是相反的.我希望看到更多项目,我需要向上滚动.该列表基本上是一个日志文件,最新的日期必须显示在列表的底部,如果我想查看较旧的记录,我需要使用向上滚动.

有办法吗?

Dem*_*ski 7

我知道,这个问题已经过时了,但是我遇到了同样的问题并没有找到一个好的解决方案.

所以我会为其他有相同问题的人发布我的解决方案.

我的第一个解决方案是我自己的IncrementalLoadCollection,其中包含用于滚动和加载数据的自定义行为.它工作正常,但不适合我.

所以我尝试了另一个强大的XAML技巧,它完美无缺,除了一个小鼠标滚轮行为.它现在逆转:).

解决方案非常简单和强大.只需旋转ListView的ScrollViewer 180°并翻转它就可以再次使用右侧的滚动条.然后对项目执行相同操作,以便它们再次正确.

而已.增量加载由ListView处理,触摸事件和滚动条工作正确,现在只需将鼠标滚轮行为反转.

我的代码

<ListView Grid.Row="1" x:Name="ChatListView" ItemsSource="{TemplateBinding ItemsSource}" 
                              SelectionMode="None"
                              IsItemClickEnabled="False"
                              IsZoomedInView="False"
                            ShowsScrollingPlaceholders="False"
                            VerticalContentAlignment="Top" 
                              VerticalAlignment="Stretch" 
                              Margin="10,5">
                        <ListView.ItemContainerStyle>
                            <Style TargetType="ListViewItem">
                                <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
                                <Setter Property="Template">
                                    <Setter.Value>
                                        <ControlTemplate TargetType="ListViewItem">
                                            <ContentPresenter/>
                                        </ControlTemplate>
                                    </Setter.Value>
                                </Setter>
                            </Style>
                        </ListView.ItemContainerStyle>
                        <ListView.ItemContainerTransitions>
                            <TransitionCollection/>
                        </ListView.ItemContainerTransitions>
                        <ListView.Template>
                            <ControlTemplate>
                                <Border BorderThickness="{TemplateBinding BorderThickness}"
                                        Padding="{TemplateBinding Padding}"
                                        BorderBrush="{TemplateBinding BorderBrush}"
                                        Background="{TemplateBinding Background}">
                                    <ScrollViewer ZoomMode="Disabled" x:Name="ScrollViewer" RenderTransformOrigin="0.5,0.5">
                                        <ScrollViewer.RenderTransform>
                                            <CompositeTransform Rotation="180" ScaleX="-1"/>
                                        </ScrollViewer.RenderTransform>
                                        <ItemsPresenter x:Name="ItemsPresenter"/>
                                    </ScrollViewer>
                                </Border>
                            </ControlTemplate>
                        </ListView.Template>
                        <ListView.ItemTemplate>
                            <DataTemplate>
                                <controls:ChatMessageControl Message="{Binding Message}"
                                                             ChatFrom="{Binding Name}"
                                                             IsMy="{Binding IsMy}"
                                                             ShortTime="{Binding CreatedTime}"
                                                             RenderTransformOrigin="0.5,0.5">

                                    <controls:ChatMessageControl.RenderTransform>
                                        <CompositeTransform Rotation="180" ScaleX="-1"/>
                                    </controls:ChatMessageControl.RenderTransform>
                                </controls:ChatMessageControl>
                            </DataTemplate>
                        </ListView.ItemTemplate>
                    </ListView>
Run Code Online (Sandbox Code Playgroud)