2017-01-09 32 views
0

默認情況下,虛擬化WPF ListView(具有GridView)。所以我將我的ItemSource屬性綁定到ViewModel中的可觀察集合中,因爲我使用的是MVVM模式(使用Caliburn.Micro,但我想這並不重要)。ListViewItems的生命週期

怎樣纔可以有一個方法,在我的項目視圖模型(該的ItemSource的項目)時,他們使用(範圍,並通過UI ListViewItem的代表)由ListView和調用的時候都未使用(不再在範圍內並在UI上表示)?

這將是非常好的延遲加載一些細節數據,但只爲可見記錄。

回答

3

你可以有覆蓋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); 
    } 
} 
+0

這看起來很有希望。有了這麼多能夠與風格,行爲等我忘了,如果我可以通過覆蓋影響名單。 – ZoolWay