簡體   English   中英

INotifyCollectionChanged UI未更新

[英]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 )是您的視圖模型。

運行命令時,應更新ProjectListBindingINotifyCollectionChanged事件。 也就是說,您的命令DodajNowyProjektCommandUsunProjekt都應在ProjectListBinding上運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM