我正在使用SQLiteNet-Extensions在OneToMany
和Playlist
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
的内容吗?
或者我在这方面采取了完全错误的方式?
答案 0 :(得分:1)
SQLite-Net Extensions已支持ObservableList
作为* ToMany属性。不再需要任何解决方法。