Winrt xaml 当ItemSource更改为Windows 8.1时,防止listview滚动到其顶部位置

Winrt xaml 当ItemSource更改为Windows 8.1时,防止listview滚动到其顶部位置,winrt-xaml,windows-8.1,Winrt Xaml,Windows 8.1,有没有办法停止向上滚动 我有listview的scrollview,我尝试保存上一个位置,并在listview中更改大小向下滚动-但它先向下滚动,然后向上滚动;/可能有一些不同的事件或完全不同的方式?您可以设置ItemsStackPanel的ItemUpdatengsCrollMode <ListView> <ListView.ItemsPanel> <ItemsPanelTemplate>

有没有办法停止向上滚动


我有listview的scrollview,我尝试保存上一个位置,并在listview中更改大小向下滚动-但它先向下滚动,然后向上滚动;/可能有一些不同的事件或完全不同的方式?

您可以设置ItemsStackPanel的ItemUpdatengsCrollMode

    <ListView>
        <ListView.ItemsPanel>
            <ItemsPanelTemplate>
                <ItemsStackPanel ItemsUpdatingScrollMode="KeepScrollOffset" />
            </ItemsPanelTemplate>
        </ListView.ItemsPanel>
    </ListView>


它只在滚动偏移量大于0时才起作用,所以只需使用ChangeView()进行滚动设置。

效果很好,但现在我有了不同的问题。。。ListView的ItemSource是currentEvents(ObservableCollection)-我希望列表按日期属性排序,但当我调用“currentEvents=new ObservableCollection(currentEvents.OrderByDescending(x=>x.ed.date.ToList());”时,ListView不会更新,但当我注释该行时,它会工作(但没有排序)我建议把这个问题作为一个新问题提出来,并在那里添加源代码,这样读起来更好。:)排序ObservableCollection是一个完全不同的问题,这里有一些答案。当您使用VariableSizedWrapGrid代替ItemsStackPanel时,您知道如何做到这一点吗?WrapGrid没有该功能。您必须自己派生并实现它,但如果没有对其源代码的完全访问,就无法判断它是否可能。