【问题标题】:Is it possible to use CollectionView with LongListSelector for grouping?是否可以使用 CollectionView 和 LongListSelector 进行分组?
【发布时间】:2012-04-05 06:04:03
【问题描述】:

我正在尝试将 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>

【问题讨论】:

  • 我面临同样的问题.. 谁能帮我解决这个问题?

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


【解决方案1】:

我遇到了同样的问题。似乎 LongListSelector 不适用于 CollectionView。我通过将其绑定到 ObservableCollection 来解决此问题。我花了两天时间弄清楚为什么 LongListSelector 没有显示任何项目。奇怪的是 CollectionView.IsEmpty 用于打开可见性(当然是通过转换器)。但无法显示项目。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-29
    • 2011-03-16
    • 1970-01-01
    • 2020-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-08
    相关资源
    最近更新 更多