отредактировано для ясности:
У меня есть 2 ListView в моем приложении. Первый содержит List >. Отображение элементов в списке настроено на отображение только ключа (строки). Когда пользователь выбирает элемент в этих списках (SelectionChanged), он изменяет ItemSource моего второго ListView на Значение пары ключей.
Это находится внутри сетки с шириной столбца Авто.
<ListView ItemsSource="{Binding Path=FunctionIndex.Index}"
Name="completeFunctionIndexView"
Style="{StaticResource SearchListStyle}"
SelectionChanged="functionIndexView_SelectionChanged" />
<ListView Name="SearchResults"
VirtualizingStackPanel.IsVirtualizing="True"
VirtualizingStackPanel.VirtualizationMode="Recycling">
<ListView.View>
<GridView >
<GridViewColumn
CellTemplate="{StaticResource ElementLV}"
Width="Auto"/>
</GridView>
</ListView.View>
</ListView>
Стиль SearchListStyle содержит только TextBlock, показывающий ключ (так как он содержит пары ключей).
ElementLV - это небольшой текстовый блок с Runs, привязанными к различным свойствам и значениям ToString моих элементов.
private void functionIndexView_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
//This supposes we want to support a "multiple selection search"
//for now this isn't implemented
List<Element> Results = new List<Element>();
foreach (KeyValuePair<String, List<Element>> item in e.AddedItems)
{
Results = item.Value;
break;
}
SearchResults.ItemsSource = Results;
}
Эти списки, которые могут отображаться в представлении списка SearchResults, могут содержать большое количество элементов (более 100 КБ). Я поместил IsVirtualizing во второй список, и большую часть времени он работает как шарм.
Но иногда я не могу полностью понять, что вызывает его (может быть, слишком быстрый щелчок, чтобы выбрать элемент?), Приложение решает, что оно должно сгенерировать все элементы в списке (что явно не требуется). ..
Может ли кто-нибудь указать мне правильное направление? Есть ли причина, по которой SearchResults решит запросить генерацию всех элементов?
Может ли оно быть связано с шириной элементов и ListResults ListView, когда Измерение пытается измерить ВСЕ его элементы?