使用包含INotifyPropertyChanged对象的ObservableCollection更新WPF中的ListBox

时间:2014-07-15 13:01:05

标签: .net wpf listbox

我是WPF的新手,我正在尝试制作一个显示许多任务当前状态的ListBox。随着时间的推移可以添加更多任务,并在完成后删除。任务由ObservableCollection实现INotifyPropertyChanged的对象表示。

当我添加新项目时,ListBox更新以显示新项目,但随着任务的进行,它没有显示更新状态,只显示开始时的状态。

要设置此刻的绑定,我只是在代码中设置项目的ItemSource。我真的没有没有关于数据绑定如何工作的知识,所以当绑定路径和数据上下文等术语被抛出而没有解释时,我有点迷失。

编辑: 相关代码:

在我的窗口课程中我有

System.Collections.ObjectModel.ObservableCollection<DeviceWrapper> m_Devices = new System.Collections.ObjectModel.ObservableCollection<DeviceWrapper>();

在我做的构造函数中:

DownloadJobsListBox.ItemsSource = m_DeviceConnections;

XAML没有任何数据引用。

在实现INotifyPropertyChanged的类中,我有:

public event PropertyChangedEventHandler PropertyChanged;

public int DownloadPercentDone
{
    get { return m_DownloadPercentDone; }
    private set 
    {
        m_DownloadPercentDone = value;
        OnPropertyChanged();
    }
}

protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{   
    var handler = PropertyChanged;
    if(handler != null)
    {
        handler(this, new PropertyChangedEventArgs(propertyName));
    }
}

我有一个从设备对象的主窗口调用的方法,它启动了一个后台工作程序。我使用ProgressChanged事件处理程序来更新DownloadPercentDone属性。

0 个答案:

没有答案