Как заставить ListView изменить ItemControl на VirtualizingStackPanel во время выполнения - PullRequest
0 голосов
/ 23 марта 2010

ОК, так что у меня есть элемент управления, производный от ListView, который на лету меняет Grouping и ItemsSource. Когда я группирую так, что полосы прокрутки исчезают, а затем меняю мой ItemsSource на другой ICollectionView, мои полосы прокрутки не возвращаются.

Основная проблема заключается в том, что ListView изменяется на VirtualizedStackPanel при активировании группировки и не изменяется обратно при деактивации группировки.

Я не против, что виртуализация отключена при группировании - это не проблема. Что мне нужно, так это способ заставить ListView регенерировать свою ItemPanel при изменении ItemSource.

1 Ответ

0 голосов
/ 23 марта 2010

Не могли бы вы добавить обработчик событий в событие SourceUpdated и затем сбросить ItemsPanelTemplate в шаблон, определенный в ваших Ресурсах ?

Что-то вроде:

public MyWindow()
{
   InitializeComponent();

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

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