Можно ли использовать 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 работает для поворота видимости (конечно, через конвертер). Но это не работает, чтобы показать предметы.

Другие вопросы по тегам