UWP ListView项模板重用上一个项模板

时间:2016-02-18 09:32:05

标签: 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 ListViewItemCustomStyle}">               
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <items:FeedItem DataContext="{Binding}" Margin="0,0,0,8"/>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>

然后我将datasource设置为ListView。

这些项目渲染得很好但是在几个项目之后,他们开始以某种方式使用先前的项目模板。我无法理解。有没有人遇到过这个麻烦并知道如何解决它?非常感谢。

1 个答案:

答案 0 :(得分:0)

ListViews的默认ItemsPanelTemplate有一个使用虚拟化的ItemsStackPanel。我们的想法是只在内存/渲染中显示那些现在显示或通过滚动可轻松访问的项目。您可以阅读有关此主题的更多信息here

如果您确实想要停止使用任何虚拟化技术,则只需定义自己的ItemsPanel即可。像这样:

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