2

CollectionView と組み合わせて LongListSelector を使用しようとしています。CollectionView には必要なすべての「もの」があるようですが、2 つを接続しても何も起こりません。これが私がこれまでに持っているものです:

コントロールの 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>
4

1 に答える 1

1

私も同じ問題を抱えていました。LongListSelector は CollectionView では動作しないようです。代わりに ObservableCollection にバインドすることで問題を解決します。LongListSelector がアイテムを表示しない理由を理解するのに 2 日間を費やしました。奇妙なことに、CollectionView.IsEmpty は (もちろんコンバーターを介して) 可視性を変更するために機能します。しかし、アイテムを表示することはできません。

于 2015-12-13T04:20:41.833 に答える