Проблема с привязкой источника элементов с использованием MVVM в WP7 - PullRequest
0 голосов
/ 02 апреля 2012

Я использую шаблон MVVM и пытаюсь связать

public ObservableCollection Friends property to LongListSelector</p>

<pre><code><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>
</code>

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

_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 с группировкой.

1 Ответ

0 голосов
/ 02 апреля 2012

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

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

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

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