我在更新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,新文件(UsunProjekt -删除)命令被绑定到按钮上.
我要站起来
OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset))在执行命令后更新UI,但我不知道在哪里附加这部分代码。或者我应该用不同的方式来做?有了我已经拥有的代码,绑定和命令都可以正常工作,只是更新根本不起作用。你能帮我解决这个问题吗?
皮奥特
发布于 2016-07-04 19:10:29
您不应该实现INotifyCollectionChanged。从您的角度来看,您需要绑定到ProjectListBinding,这将自动为您引发INotifyCollectionChanged并更新UI。当然,假设您拥有的类(即engine)是您的视图模型。
在运行您的命令时,您应该更新ProjectListBinding,以便启动INotifyCollectionChanged事件。也就是说,您的命令DodajNowyProjektCommand和UsunProjekt都应该在ProjectListBinding上操作。
https://stackoverflow.com/questions/38190808
复制相似问题