Проблема с привязкой источника элементов с использованием MVVM в WP7

I am using MVVM pattern and I am trying to bind a

public ObservableCollection Friends property to LongListSelector

<toolkit:LongListSelector
            ItemsSource="{Binding Friends}"
            GroupHeaderTemplate="{StaticResource movieGroupHeader}"
            ListHeaderTemplate="{StaticResource movieListHeader}">
            <toolkit:LongListSelector.ItemTemplate>
                <DataTemplate>
                    <Grid Margin="12,8,0,8">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto"/>
                            <ColumnDefinition Width="*"/>
                        </Grid.ColumnDefinitions>

                        <StackPanel Grid.Column="1" VerticalAlignment="Top">
                            <TextBlock Text="{Binding MyBoxName}" Style="{StaticResource PhoneTextLargeStyle}" FontFamily="{StaticResource PhoneFontFamilySemiBold}" Margin="12,-12,12,6"/>
                            <TextBlock Text="{Binding MyBoxID}" Style="{StaticResource PhoneTextNormalStyle}" TextWrapping="Wrap" FontFamily="{StaticResource PhoneFontFamilySemiBold}"/>
                            <StackPanel Orientation="Horizontal">
                                <TextBlock Text="Status:" Style="{StaticResource PhoneTextSmallStyle}"/>
                                <TextBlock Text="{Binding Status}" Style="{StaticResource PhoneTextSmallStyle}" FontFamily="{StaticResource PhoneFontFamilySemiBold}"/>
                            </StackPanel>

                        </StackPanel>
                    </Grid>
                </DataTemplate>
            </toolkit:LongListSelector.ItemTemplate>
        </toolkit:LongListSelector>

Теперь проблемы, когда я пытаюсь добавить

_friends.Add(new Model.Friends { MyBoxID = e.RosterItem.Jid, MyBoxName = e.RosterItem.Name, Status = Matrix.Xmpp.PresenceType.unavailable })

он дает InvalidCastException, поэтому я попробовал List вместо ObservableCollection. Теперь я не получаю исключение, но в LLS ничего не отображается. Как я могу привязать свойство My ObservableCollection к LLS с группировкой.


person user1030947    schedule 02.04.2012    source источник


Ответы (1)


Для LongListSelector нужна не просто коллекция, а какая-то более сложная структура для поддержки группировки

Посмотрите на LongListCollection. Это отличный класс, который должен помочь вам

Использование:

var list = new LongListCollection<Event, string>(Events, x => x.Date.ToLongDateString());
person Ku6opr    schedule 02.04.2012