实现OnCollectionChanged,以便ListBox自动更新WPF

时间:2014-11-14 11:51:58

标签: c# wpf listbox observablecollection inotifycollectionchanged

我有这个对象包装器,我的实例用:

填充集合
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" ... />

0 个答案:

没有答案