是否可以将CollectionView与LongListSelector一起使用进行分组?

时间:2012-04-05 06:04:03

标签: c# windows-phone-7 xaml collectionviewsource

我正在尝试将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 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。似乎LongListSelector不能与CollectionView一起使用。我通过将它绑定到ObservableCollection来解决问题。我花了两天时间搞清楚为什么LongListSelector没有显示任何项目。奇怪的是,CollectionView.IsEmpty用于转换Visibility(通过转换器当然)。但它不能显示项目。