ListView和Observable Collection内存泄漏?

时间:2015-07-16 17:33:49

标签: listview memory-leaks windows-store-apps observablecollection

我有一个Windows商店应用程序,它使用带有可观察集合的项目源的ListView。我也在其中使用绑定,行为和命令。

我定期刷新商品来源。我的问题是,它似乎在泄漏。我怀疑它与Listview有关,因为当我删除它时,内存是稳定的。此外,我检查过,似乎正在处理和重新创建集合。

我该如何解决这个问题?

谢谢

编辑:

只需添加其他信息。我的代码是这样的:

ObservableCollection<MyViewModel> myViewModels = new ObservableCollection<MyViewModel>();

MyViewModel是一个已经继承 INotifyPropertyChanged 的类。

然后我在ListView中使用它,如下所示:

<ListView Grid.Row="1"
      ItemTemplateSelector="{StaticResource MyButtonStyleSelector}"
      ItemsSource="{Binding Path=myViewModels}">

<ListView.ItemContainerStyle>
    <Style BasedOn="{StaticResource Style_SelectorItem_Chromeless}" TargetType="ListViewItem">
        <Setter Property="Margin" Value="4" />
    </Style>
</ListView.ItemContainerStyle>
<ListView.ItemsPanel>
    <ItemsPanelTemplate>
        <WrapGrid MaximumRowsOrColumns="4" Orientation="Horizontal" />
    </ItemsPanelTemplate>
</ListView.ItemsPanel>

使用MyButtonStyleSelector选择一个ItemTemplate再次绑定到myViewModels的其他属性(例如标题,描述),并绑定到 RelayCommand 行为

编辑2:

刷新数据时,我在MyViewModel上有一个Clear()操作,它将其所有子属性设置为null,并将myViewModels集合设置为null。但是,当我检入VS Profiler时,似乎MenuItemViewModel没有得到正确的垃圾收集(我没有在负项目数的项目中看到它们)。这是因为它仍在ListView中引用吗?

编辑3:

此问题似乎非常接近:https://connect.microsoft.com/VisualStudio/feedback/details/761770/metro-apps-with-c-heavily-leaking-memory

0 个答案:

没有答案