INotifyCollectionChanged UI not updated
本文关键字:updated not UI INotifyCollectionChanged | 更新日期: 2023-09-27 17:54:32
我在更新UI时有问题。我有一个用来绑定UI元素的类:
public class engine : INotifyCollectionChanged
{
RWProject project = new RWProject();
public ObservableCollection<string> ProjectListBinding
{
get { return project.list(); }
}
public event NotifyCollectionChangedEventHandler CollectionChanged;
private void OnCollectionChanged(NotifyCollectionChangedEventArgs eventArgs)
{
if (this.CollectionChanged != null)
{
this.CollectionChanged(this, eventArgs);
}
}
private ICommand _usunProjekt;
public ICommand UsunProjekt
{
get
{
_usunProjekt = new UsunProjektCommand();
return _usunProjekt;
}
}
private ICommand _dodajProjekt;
public ICommand DodajProjekt
{
get
{
_dodajProjekt = new DodajNowyProjektCommand();
return _dodajProjekt;
}
}
}
ProjectListBinding是文件夹内的文件名列表,这些文件名显示在listview控件上。
命令DodajProjekt创建在同一文件夹,新文件(usprojekt -删除)命令被绑定到按钮。
I need to rise event
OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset))
命令执行后更新UI,但我不知道在哪里附加这部分代码。或者我应该换一种方法?对于我已经拥有的代码,绑定和命令工作得很好,只是更新根本不起作用。你能帮我解决这个问题吗?
彼得亚雷
您不应该实现INotifyCollectionChanged
。从您的视图来看,您需要绑定到ProjectListBinding
,这将自动为您引发INotifyCollectionChanged
并更新UI。当然,假设您拥有的类(即engine
)是您的视图模型。
在运行命令时,您应该更新ProjectListBinding
以使INotifyCollectionChanged
事件上升。也就是说,命令DodajNowyProjektCommand
和UsunProjekt
都应该在ProjectListBinding
上运行。