这是一个cinario:
我有一个 ListView,其中 ItemsSource = ProjectModel.Instance.PagesModelsCollection; PagesModelsCollection 是一个ObservableCollection
在 ListView XAML 部分:
<ListView.ItemTemplate>
<DataTemplate x:Name="PagesViewDataTemplate">
<DataTemplate.Resources>
<Style x:Key="PageHostStyle" TargetType="{x:Type p:KPage}">
</Style>
</DataTemplate.Resources>
<StackPanel x:Name="MarginStack" Margin="50,50,50,50" >
<p:KPage x:Name="PageHost" >
</p:KPage>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
问题是每次我们刷新项目时都会重新创建 ITemTemplate。因此,如果我们在列表视图中有 100 个项目,那么如果我们刷新项目,就会创建另外 100 个新的 ItemTemplate 实例!
结果,如果我们在其中一个 ItemTemplate 实例上添加 UIElements,那些添加的 UIElements 将丢失,因为旧的 ITemTemplate 被替换为新的!
创建后如何保留 ItemTemplate 实例?