LongListSelector показывает только 1 группу - PullRequest
1 голос
/ 18 ноября 2011

Я пытался заставить самый простой пример группировки работать с использованием LongListSelector, но вижу только свою первую группу.

Вот мой xaml:

        <toolkit:LongListSelector x:Name="MainListBox" Background="Transparent"
            ItemsSource="{Binding Items}">
            <toolkit:LongListSelector.GroupHeaderTemplate>
                <DataTemplate>
                    <Border Background="Transparent">
                        <Border Background="{StaticResource PhoneAccentBrush}" Width="475" Height="35" HorizontalAlignment="Left">
                            <TextBlock Text="{Binding Key}" 
                                       Foreground="{StaticResource PhoneForegroundBrush}" 
                                       Style="{StaticResource PhoneTextGroupHeaderStyle}"
                                       VerticalAlignment="Bottom"/>
                        </Border>
                    </Border>
                </DataTemplate>
            </toolkit:LongListSelector.GroupHeaderTemplate>


            <toolkit:LongListSelector.ItemTemplate>
                <DataTemplate>
                    <StackPanel Margin="0,0,0,17" Width="432" Orientation="Horizontal">
                        <TextBlock Text="{Binding name}" TextWrapping="Wrap" Width="345"/>
                    </StackPanel>
                </DataTemplate>
            </toolkit:LongListSelector.ItemTemplate>

        </toolkit:LongListSelector>

Вот мой код c #:

        List<ItemViewModel> l1 = new List<ItemViewModel>();
        List<ItemViewModel> l2= new List<ItemViewModel>();
        l1.Add(new ItemViewModel(){ name="test1" });
        l1.Add(new ItemViewModel(){ name="test2" });
        l2.Add(new ItemViewModel(){ name="test3" });
        this.Items.Add(new Group<ItemViewModel>("A", l1));
        this.Items.Add(new Group<ItemViewModel>("B", l2));

ItemViewModel - это просто контейнерный класс.

Когда я запускаю код, я в основном вижу:

A
test1
test2

но без признаков B.

Любая помощь приветствуется.

Группа определяется как:

public class Group<T> : ObservableCollection<T>
{
    public Group(string name, IEnumerable<T> items)
    {
        this.Key = name;
        foreach (T item in items)
        {
            this.Add(item);
        }
    }

    public override bool Equals(object obj)
    {
        Group<T> that = obj as Group<T>;

        return (that != null) && (this.Key.Equals(that.Key));
    }

    public string Key
    {
        get;
        set;
    }
}

1 Ответ

0 голосов
/ 22 сентября 2013

Где T - тип. ItemsSource - это ваш источник предметов, который состоит из элементов типа T. И укажите элемент, который вы хотите отсортировать из вашего ItemsSource

    List<LonglistSelectorPivot1<T>> DataSource = LonglistSelectorPivot1<T>.CreateGroups(ItemsSource,
               System.Threading.Thread.CurrentThread.CurrentUICulture,
               (T s) => { return s.WHAT_YOU_WANNER_SORT_FOR; }, true);
            MainListBox.ItemsSource = DataSource;
...