Можно ли использовать CollectionView с LongListSelector для группировки?
Я пытаюсь использовать LongListSelector в сочетании с CollectionView. Кажется, что в CollectionView есть все необходимое, но когда я соединяю их, ничего не происходит. Вот что у меня так далеко:
В ctor моего элемента управления (парень, который содержит LLS), я создаю CollectionView:
GroupDescription group = new PropertyGroupDescription("FullName", new FirstLetterConverter(true, true));
m_view.GroupDescriptions.Add(group);
Затем, когда меняется соответствующее свойство зависимости (которое содержит список, который я хочу поместить в LLS), я иду и назначаю его m_view и назначаю группы ItemsSource:
private void FriendsChanged()
{
m_view.Source = Friends;
friendList.ItemsSource = m_view.View.Groups;
Когда я проверяю свойство.Groups, информация кажется кошерной - у нее правильное количество элементов, а у каждого элемента есть дочерние элементы, которые кажутся правильными. Тем не менее, похоже, что все внутреннее, и, следовательно, LLS не может отображать соответствующую информацию. Когда я заменяю материал CollectionView на ложную коллекцию, LLS отображает информацию (поэтому я уверен, что LLS настроен правильно)
Вот что я использую с LLS - обратите внимание, что вместо привязки я использую "XXXX" в нескольких местах, чтобы убедиться, что ничего не нарушается из-за неправильной привязки:
<toolkit:LongListSelector x:Name="friendList">
<toolkit:LongListSelector.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Image Source="{Binding ThumbnailImage}" Width="62" Height="62"/>
<TextBlock Text="{Binding FullName}"/>
</Grid>
</DataTemplate>
</toolkit:LongListSelector.ItemTemplate>
<toolkit:LongListSelector.GroupHeaderTemplate>
<DataTemplate>
<Border Background="{StaticResource PhoneAccentBrush}" Padding="{StaticResource PhoneTouchTargetOverhang}" Width="200" HorizontalAlignment="Left">
<!--<TextBlock Text="{Binding Name}" Style="{StaticResource PhoneTextLargeStyle}"/>-->
<TextBlock Text="XXXX" Style="{StaticResource PhoneTextLargeStyle}"/>
</Border>
</DataTemplate>
</toolkit:LongListSelector.GroupHeaderTemplate>
<toolkit:LongListSelector.GroupItemTemplate>
<DataTemplate>
<Border Background="{StaticResource PhoneAccentBrush}" Margin="{StaticResource PhoneTouchTargetOverhang}" Padding="{StaticResource PhoneTouchTargetOverhang}" Width="180">
<TextBlock Text="XXXX" Style="{StaticResource PhoneTextLargeStyle}"/>
<!--<TextBlock Text="{Binding Name}" Style="{StaticResource PhoneTextLargeStyle}"/>-->
</Border>
</DataTemplate>
</toolkit:LongListSelector.GroupItemTemplate>
</toolkit:LongListSelector>
1 ответ
У меня такая же проблема. Кажется, LongListSelector не работает с CollectionView. Я решаю проблему, связывая ее с ObservableCollection вместо этого. Я потратил два дня, чтобы понять, почему LongListSelector не показывал ни одного элемента. Странно то, что CollectionView.IsEmpty работает для поворота видимости (конечно, через конвертер). Но это не работает, чтобы показать предметы.