0

默认情况下,WPF ListView(带有GridView)是虚拟化的。ItemSource因此,当我使用 MVVM 模式(使用 Caliburn.Micro 但我想这并不重要)时,我将我的属性绑定到 ViewModel 中的可观察集合。

当ListView使用(在范围内并由 UI listviewitem 表示)和未使用时(不再在范围内并在用户界面)?

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

4

1 回答 1

3

你可以有一个派生的 ListView 重写PrepareContainerForItemOverrideClearContainerForItemOverride方法:

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);
    }
}
于 2017-01-09T15:55:51.063 回答