Я пытался заставить самый простой пример группировки работать с использованием 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;
}
}