LongListSelector仅显示1个组

时间:2011-11-18 13:52:17

标签: c# windows-phone-7 longlistselector

我一直在尝试使用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只是一个容器类。

当我运行代码时,我基本上看到了:

  

一个
    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 :(得分:0)

其中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;