ListViewItems 的生命周期

Lifecycle for ListViewItems

默认情况下,WPF ListView(带有 GridView)是虚拟化的。所以我将我的 ItemSource 属性 绑定到 ViewModel 中的一个可观察集合,因为我使用的是 MVVM 模式(使用 Caliburn.Micro 但我想这无关紧要)。

使用(在范围内并由 UI 表示时,如何在我的项目视图模型(itemsource 的项目)上调用方法listviewitem)由 ListView 以及它们何时 未使用(不再在范围内并在 UI 上表示)?

延迟加载一些详细数据会非常好,但仅限于可见记录。

您可以使用重写的 PrepareContainerForItemOverrideClearContainerForItemOverride 方法派生 ListView:

public class MyListView : ListView
{
    protected override void PrepareContainerForItemOverride(
        DependencyObject element, object item)
    {
        base.PrepareContainerForItemOverride(element, item);

        ((MyItem)item).DoSomethingOnPrepare();
    }

    protected override void ClearContainerForItemOverride(
        DependencyObject element, object item)
    {
        ((MyItem)item).DoSomethingOnClear();

        base.ClearContainerForItemOverride(element, item);
    }
}