这是我的代码:
<ListView ItemsSource="{Binding Items}" IsItemClickEnabled="True" ItemClick="ItemView_ItemClick" ContinuumNavigationTransitionInfo.ExitElementContainer="True">
<ListView.ItemTemplate>
<DataTemplate>
<Border BorderBrush="{StaticResource ButtonBorderThemeBrush}" BorderThickness="0,0,0,3">
<StackPanel Margin="0,0,0,9.5">
<TextBlock
Text="{Binding Title}"
TextWrapping="Wrap"
Pivot.SlideInAnimationGroup="1"
CommonNavigationTransitionInfo.IsStaggerElement="True"
Style="{ThemeResource ListViewItemTextBlockStyle}"
Margin="0,0,19,0">
<interactivity:Interaction.Behaviors>
<core:IncrementalUpdateBehavior Phase="1"/>
</interactivity:Interaction.Behaviors>
</TextBlock>
<TextBlock
Text="{Binding Description}"
TextWrapping="WrapWholeWords"
Pivot.SlideInAnimationGroup="2"
CommonNavigationTransitionInfo.IsStaggerElement="True"
Style="{ThemeResource ListViewItemContentTextBlockStyle}"
Margin="0,0,19,0">
<interactivity:Interaction.Behaviors>
<core:IncrementalUpdateBehavior Phase="2"/>
</interactivity:Interaction.Behaviors>
</TextBlock>
</StackPanel>
</Border>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
然后,我在代码隐藏中设置NavigationCacheMode = NavigationCacheMode.Required
。当我导航到ItemPage并返回时。当您滑动ListViewItems并且再也不显示时,ListViewItems将变为空白。他们就这样消失了:
答案 0 :(得分:1)
最后,我发现了问题。这是一个错误。
因为在IncrementalUpdateBehavior中,它使用一个名为&#34; FindContentTemplateRoot&#34;的函数。在可视化树中搜索关联对象的ContentTemplateRoot。当我导航到另一个页面时,它会引发相关对象的Unloaded事件并再次搜索可视树。但是这次它失败了,因为父母已经被卸下了。 VisualTreeHelper.GetParent()返回null。
因此,它会导致此行为通常无法解除关联对象的错误。页面返回时,关联的对象再次缓存。这样相关对象的不透明度和DataContext将设置两次或更多次。它只是搞砸了。