刷新wp7中的列表框



我有型号:

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并在视图模型中设置它)。

那么如何在WP7中重新绘制列表框呢?找不到UIElements的任何Refresh或Update方法。

我试着这样称呼它。OnPropertyChanged("百强歌曲");但它不起作用。我试着调用UpdateLayout-同样。

一种方法是将页面的DataContex设置为null,然后恢复到我的ViewModel。它有效,但时间太长(大约5秒)。

有什么想法吗?

编写自己的集合包装并将其用于Top100Songs属性

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

最新更新