如何使ListView在运行时将ItemControl更改为VirtualizingStackPanel

时间:2010-03-23 17:08:44

标签: wpf listview virtualization itemspanel

好的,所以,我有一个ListView派生的控件,可以动态更改Grouping和ItemsSource。当我将滚动条消失,然后将我的ItemsSource更改为不同的ICollectionView时,我的滚动条不会返回。

基本问题是ListView在激活分组时更改为VirtualizedStackPanel,并且在取消激活分组时不会更改。

我不介意在分组时禁用虚拟化 - 这不是问题。我需要的是一种在我更改ItemsSource时让ListView重新生成它的ItemPanel的方法。

1 个答案:

答案 0 :(得分:0)

您可以为SourceUpdated事件添加事件处理程序,然后将ItemsPanelTemplate重置为Resources中定义的模板吗?

类似的东西:

public MyWindow()
{
   InitializeComponent();

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

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