Xaml UWP ListView项目模板重用以前的项目模板

Xaml UWP ListView项目模板重用以前的项目模板,xaml,windows-10,windows-10-mobile,windows-10-universal,Xaml,Windows 10,Windows 10 Mobile,Windows 10 Universal,我刚开始在UWP上开发应用程序。我遇到了一个问题,我有一个ListView,其中DataTemplate是一个UserControl <ListView ItemsSource="{Binding Data, Mode=OneWay}" SelectionMode="None" IsItemClickEnabled="False" ItemContainerStyle="{StaticResource ListViewItemCustomSty

我刚开始在UWP上开发应用程序。我遇到了一个问题,我有一个ListView,其中DataTemplate是一个UserControl

 <ListView ItemsSource="{Binding Data, Mode=OneWay}" SelectionMode="None" IsItemClickEnabled="False"
                      ItemContainerStyle="{StaticResource ListViewItemCustomStyle}">               
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <items:FeedItem DataContext="{Binding}" Margin="0,0,0,8"/>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>

然后我将datasource设置为ListView


这些项目呈现得很好,但在几个项目之后,它们开始以某种方式使用以前的项目模板。我不明白。有没有人遇到过这个问题并知道如何解决?非常感谢。

ListView默认的ItemsPanelTemplate有一个使用虚拟化的ItemsStackPanel。其思想是只在内存/渲染中显示当前显示或通过滚动可轻松访问的项目。你可以阅读更多关于这个主题的内容

如果你真的想停止使用任何虚拟化技术,你只需要定义你自己的ItemsPanel。像这样:

<ListView>
    <ListView.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel Orientation="Vertical"/>
        </ItemsPanelTemplate>
    </ListView.ItemsPanel>
</ListView>

ListView默认的ItemsPanelTemplate有一个使用虚拟化的ItemsStackPanel。其思想是只在内存/渲染中显示当前显示或通过滚动可轻松访问的项目。你可以阅读更多关于这个主题的内容

如果你真的想停止使用任何虚拟化技术,你只需要定义你自己的ItemsPanel。像这样:

<ListView>
    <ListView.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel Orientation="Vertical"/>
        </ItemsPanelTemplate>
    </ListView.ItemsPanel>
</ListView>


previous item template是什么意思?@GeertvdC示例:我的ListView中有很多项目,对吗?在滚动大约10个项目后,第11个项目的模板与第一个项目完全相同,尽管该项目的内容(数据上下文)完全不同。您对“上一个项目模板”是什么意思?@GEERDVDC示例:我的ListView中有很多项目,对吗?滚动大约10个项目后,第11个项目的模板与第一个项目完全相同,尽管该项目的内容(数据上下文)完全不同。