[英]INotifyCollectionChanged UI not updated
我在更新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,但我不知道將這部分代碼附加在何處。 還是我應該以不同的方式來做? 使用我已經擁有的代碼,綁定和命令可以正常工作,僅更新根本無法工作。 你能幫我解決這個問題嗎?
皮特
您不應該實現INotifyCollectionChanged
。 從您的角度來看,您需要綁定到ProjectListBinding
,它將自動為您引發INotifyCollectionChanged
並更新UI。 當然,假設您擁有的類(即engine
)是您的視圖模型。
運行命令時,應更新ProjectListBinding
以INotifyCollectionChanged
事件。 也就是說,您的命令DodajNowyProjektCommand
和UsunProjekt
都應在ProjectListBinding
上運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.