2010-03-23 30 views
0

好吧,所以,我有一個ListView派生的控件,可以即時更改Grouping和ItemsSource。當我編組滾動條消失,然後將我的ItemsSource更改爲不同的ICollectionView時,我的滾動條不返回。如何使ListView在運行時將ItemControl更改爲VirtualizingStackPanel

基本問題是,ListView在激活分組時激活VirtualizedStackPanel,當分組被取消激活時不會改回。

我不介意虛擬化在分組時被禁用 - 這不是問題。我需要的是一種讓ListView在我更改ItemsSource時重新生成它的ItemPanel的方法。

回答

0

您能否將事件處理程序添加到SourceUpdated事件中,然後將ItemsPanelTemplate重置爲您的Resources中定義的模板?

喜歡的東西:

public MyWindow() 
{ 
    InitializeComponent(); 

    MyListView.SourceUpdated += new EventHandler<DataTransferEventArgs>(OnSourceUpdated); 
} 

void OnSourceUpdated(object sender, DataTransferEventArgs e) 
{ 
    MyListView.ItemsPanel = (ItemsPanelTemplate)Resources["MyItemsPanelTemplate"]; 
} 
+0

該訣竅,謝謝!有時候,這只是另一個問題。 –