使用IList模拟ObservableCollection类

时间:2014-11-07 19:29:27

标签: c# windows-phone-8.1 sqlite-net-extensions

我正在使用SQLiteNet-ExtensionsOneToManyPlaylist IList之间实现Track关系。

目前,库中唯一支持的集合类型为List和数组(我更改了库以允许IList作为List)。

现在,我希望每当我的集合的曲目被修改(添加,删除,清除)时都会收到通知,但图书馆不允许ObservableCollection(我不会#39;我想要更改库太多了)。 这意味着我尝试重新创建ObservableCollection,如下所示:

class ObservableIList<T> : IList<T>, INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    private void OnPropertyChanged(string propertyName)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this,
                new PropertyChangedEventArgs(propertyName));
        }
    }


    private List<T> list = new List<T>();
    public void Add(T item)
    {
        list.Add(item);
        OnPropertyChanged("magical property name");
    }

    ....
}

这样我的Playlist看起来如下:

class Playlist
{
    [PrimaryKey, AutoIncrement]
    public int Id { get; set; }

    public string Title { get; set; }

    [Indexed]
    public Boolean isCurrent { get; set; }

    [OneToMany]
    public ObservableIList<Track> Tracks { get; set; }
}

这似乎应该有效,但我不知道在向propertyName添加新Track时我应该使用ObservableList的内容吗?

或者我在这方面采取了完全错误的方式?

1 个答案:

答案 0 :(得分:1)

SQLite-Net Extensions已支持ObservableList作为* ToMany属性。不再需要任何解决方法。