我有这个对象包装器,我的实例用:
填充集合public class Multimedia : INotifyPropertyChanged
{
//... constructor
//... getters and setters for the properties
public void OnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
ObservableCollection<Multimedia> objSender = sender as ObservableCollection<Multimedia>;
NotifyCollectionChangedAction action = e.Action;
}
}
收藏品:
public class MultiMediaList : ObservableCollection<Multimedia>
{
//... constructor with creating several default objects of Multimedia
public void addMedia(string title, string artist, string genre, MediaType type)
{
this.Add(new Multimedia(title, artist, genre, type));
}
}
所以,我有一个绑定到集合的ListBox。当我启动应用程序时,会显示默认值。但是当我向集合中添加一个新条目时 - ListBox不会使用新项目进行更新。
我想我没有正确实现OnCollectionChanged
方法,但是从我在网上看到的例子中我无法理解如何做到这一点,因为每个案例都是如此不同。
修改 Collection和ListBox的代码隐藏绑定:
public partial class MainWindow : Window
{
MultiMediaList mediaList;
public MainWindow()
{
InitializeComponent();
mediaList = new MultiMediaList();
LB_media.ItemsSource = mediaList;
}
//...
}
XAML:
<ListBox Name="LB_media" DisplayMemberPath="Title" ... />