Обновить список в wp7 - PullRequest
0 голосов
/ 13 марта 2012

У меня есть модель:

public class Song
{
        public int ContentID { get; set; }

        public bool IsSelected
        {
            get
            {
                    var song = PlayerHelper.ReadNowPlaying();
                    return song.Id == ContentID;
            }
        }
}

У меня есть представление с ListBox:

<ListBox x:Name="songsLstBox" ItemsSource="{Binding Top100Songs}" />

И ViewModel со списком элементов песен. Поэтому иногда я хочу обновить (перерисовать) список. Необходимо показать, что IsSelected изменено (Нет, я не могу использовать INotifyPropertyChanged в модели и установить его в viewmodel).

Так как я могу перерисовать список в WP7? Я не могу найти какой-либо метод обновления или обновления для UIElements.

Я пытался вызвать это. OnPropertyChanged ("Top100Songs"); но это не работает Я попытался вызвать UpdateLayout - то же самое.

Один из способов - установить для DataContex для страницы значение null, а затем вернуться к моей ViewModel. Работает, но так долго (около 5 секунд для смены).

Так есть идеи?

1 Ответ

3 голосов
/ 13 марта 2012

Напишите свою собственную обертку коллекции и используйте ее для свойства Top100Songs

class SongCollection : ObservableCollection<Song>
{
  public Refresh()
  {
    OnCollectionChanged(
      new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset));
  }
}
...