第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在自定義列表上實(shí)現(xiàn) INotifyCollectionChanged

在自定義列表上實(shí)現(xiàn) INotifyCollectionChanged

C#
藍(lán)山帝景 2021-10-24 17:03:53
我目前在 UWP 中有一個(gè)類(lèi),它是一堆不同類(lèi)型列表的包裝器,包括我構(gòu)建的自定義列表。這個(gè)包裝器需要綁定到某種列表,ListView、ListBox、GridView 等。問(wèn)題是當(dāng)我試圖實(shí)現(xiàn)時(shí)INotifyCollectionChanged,似乎 UI 元素沒(méi)有將處理程序附加到CollectionChanged或PropertyChanged處理程序(處理程序總是null)。但是,將列表從我的自定義列表更改為 anObservableCollection似乎工作正常。我錯(cuò)過(guò)了什么讓 UI 將其集合綁定到我的班級(jí)?我目前的實(shí)現(xiàn)看起來(lái)像public class MyWrapperList<T> : IList<T>, INotifyPropertyChanged, INotifyCollectionChanged{    private IEnumerable<T> _source;    // Implement all interfaces here, including my custom GetEnumerator() and all my add, insert, remove, etc classes}請(qǐng)注意,我不想像ObservableCollection許多其他答案所建議的那樣繼承,因?yàn)槲蚁M@是一個(gè)查看原始列表的包裝器。編輯:您可以在 GitHub 上找到可重現(xiàn)的問(wèn)題示例:https : //github.com/nolanblew/SampleCollectionChanged/
查看完整描述

1 回答

?
慕哥6287543

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超10個(gè)贊

為了具備ListView自動(dòng)綁定到您的收藏,您必須實(shí)現(xiàn)這兩個(gè) INotifyCollectionChange 和 IList(注:這就是非通用的IList)。


如果您修改示例代碼以便您的自定義列表類(lèi)實(shí)現(xiàn)IList:


public class MyWrapperList<T> : IList<T>, INotifyPropertyChanged, INotifyCollectionChanged, IList

{


    //... all your existing code plus: (add your own implementation)


    #region IList 


    void ICollection.CopyTo(Array array, int index) => throw new NotImplementedException();        

    bool IList.IsFixedSize => throw new NotImplementedException();

    bool IList.Contains(object value) => throw new NotImplementedException();       

    int IList.IndexOf(object value) => throw new NotImplementedException();

    void IList.Insert(int index, object value) => throw new NotImplementedException();

    void IList.Remove(object value) => throw new NotImplementedException();

    int IList.Add(object value) => throw new NotImplementedException();

    public bool IsSynchronized => throw new NotImplementedException();

    public object SyncRoot { get; } = new object();


    object IList.this[int index] {

        get => this[index];

        set => this[index] = (T) value;

    }

    #endregion

}

然后在CollectionChanged觸發(fā)按鈕單擊事件時(shí)設(shè)置。


查看完整回答
反對(duì) 回復(fù) 2021-10-24
  • 1 回答
  • 0 關(guān)注
  • 228 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)