默认情况下,WPF ListView
(GridView
)已虚拟化。因此,我将ItemSource
属性绑定到ViewModel中的可观察集合,因为我正在使用MVVM模式(使用Caliburn.Micro,但我认为这无关紧要。)
当ListView使用 (在范围内并由UI listviewitem表示)时,我如何在我的项目视图模型(itemsource项目)上调用方法,当它们是 unused (不再在范围内并在UI上显示)?
延迟加载一些细节数据会非常好,但仅限于可见记录。
答案 0 :(得分:3)
您可以使用已覆盖的PrepareContainerForItemOverride
和ClearContainerForItemOverride
方法获取派生的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);
}
}