我刚刚开始在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。
这些项目渲染得很好但是在几个项目之后,他们开始以某种方式使用先前的项目模板。我无法理解。有没有人遇到过这个麻烦并知道如何解决它?非常感谢。
答案 0 :(得分:0)
ListViews的默认ItemsPanelTemplate有一个使用虚拟化的ItemsStackPanel。我们的想法是只在内存/渲染中显示那些现在显示或通过滚动可轻松访问的项目。您可以阅读有关此主题的更多信息here。
如果您确实想要停止使用任何虚拟化技术,则只需定义自己的ItemsPanel即可。像这样:
<ListView>
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Vertical"/>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>