2017-01-09 5 views
0

По умолчанию виртуализирован WPF ListViewGridView). Поэтому я привязываю свое свойство ItemSource к наблюдаемой коллекции в ViewModel, поскольку я использую шаблон MVVM (с Caliburn.Micro, но, я думаю, это не имеет значения).Жизненный цикл для ListViewItems

Как я могу иметь метод вызов на моей модели представления элементов (Элементы ItemSource), когда они используются (в объеме и представлена ​​ListViewItem UI) в ListView и когда они неиспользованной (больше не охвачены и представлены в пользовательском интерфейсе)?

Было бы неплохо лениво загрузить некоторые подробные данные, но только для видимых записей.

ответ

3

Вы могли иметь производный ListView с подменены PrepareContainerForItemOverride и ClearContainerForItemOverride методами:

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); 
    } 
} 
+0

Это выглядит многообещающим. С таким большим количеством способностей со стилями, поведением и т. Д. Я забыл, могу ли я повлиять на список с переопределениями. – ZoolWay

Смежные вопросы