我是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属性。