欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

在WPF中合并兩個(gè)ObservableCollection集合

 更新時(shí)間:2022年06月22日 10:40:15   作者:天方  
這篇文章介紹了在WPF中合并兩個(gè)ObservableCollection集合的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

WPF中的ObservableCollection是一個(gè)非常常用的集合對(duì)象,我們可以通過(guò)將它綁定到ListBox之類(lèi)的集合控件上時(shí),當(dāng)集合發(fā)生變更時(shí),會(huì)同步更新到界面上。但是,有的時(shí)候我們需要合并兩個(gè)集合,將他們的拼接后顯示在界面上,此時(shí)該何如做呢?

乍一看來(lái),這是個(gè)非常簡(jiǎn)單的事情,.Net的BCL本身就提供了IEnumerate集合連接函數(shù)——Concat,可以通過(guò)它輕松連接兩個(gè)集合。但當(dāng)你使用它連接集合并果呈現(xiàn)到界面上時(shí),就會(huì)發(fā)現(xiàn)一個(gè)問(wèn)題——雖然它可以將當(dāng)前結(jié)果拼接起來(lái)顯示,但卻不會(huì)同步顯示集合的變更。

原因非常簡(jiǎn)單:界面之所以能同步ObservableCollection的結(jié)果,是因?yàn)樗鼘?shí)現(xiàn)了INotifyCollectionChanged接口。而用Concat連接后的新集合卻是沒(méi)有實(shí)現(xiàn)這個(gè)接口的。雖然自己實(shí)現(xiàn)一個(gè)這樣的合并后的可通知集合并不難,但.Net中本身就已經(jīng)提供了這樣一個(gè)集合——CompositeCollection,這里就不重復(fù)造輪子了。代碼示例如下:

    void testCompositeCollection()
    {
        var cmpc = new CompositeCollection();

        var numbers = new ObservableCollection<int>();
        var lines = new ObservableCollection<string>();


        cmpc.Add(new CollectionContainer() { Collection = numbers });
        cmpc.Add(new CollectionContainer() { Collection = lines });

        listBox.ItemsSource = cmpc;

        foo(numbers);
        foo(lines);
    }

    async void foo(ObservableCollection<string> lines)
    {
        for (int i = 0; i < 10; i++)
        {
            await Task.Delay(800);
            lines.Add("Line " + 2 * i);
        }
    }

    async void foo(ObservableCollection<int> numbers)
    {
        for (int i = 0; i < 10; i++)
        {
            await Task.Delay(1000);
            numbers.Add(i);
        }
    }

到此這篇關(guān)于WPF合并ObservableCollection的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C#函數(shù)式編程中的標(biāo)準(zhǔn)高階函數(shù)詳解

    C#函數(shù)式編程中的標(biāo)準(zhǔn)高階函數(shù)詳解

    這篇文章主要介紹了C#函數(shù)式編程中的標(biāo)準(zhǔn)高階函數(shù)詳解,本文講解了何為高階函數(shù)、Map、 Filter、Fold等內(nèi)容,需要的朋友可以參考下
    2015-01-01
  • C#實(shí)現(xiàn)裝箱與拆箱操作簡(jiǎn)單實(shí)例

    C#實(shí)現(xiàn)裝箱與拆箱操作簡(jiǎn)單實(shí)例

    這篇文章主要介紹了C#實(shí)現(xiàn)裝箱與拆箱操作,對(duì)于新手理解裝箱與拆箱有一定的幫助,需要的朋友可以參考下
    2014-07-07
  • Unity shader實(shí)現(xiàn)多光源漫反射以及陰影

    Unity shader實(shí)現(xiàn)多光源漫反射以及陰影

    這篇文章主要為大家詳細(xì)介紹了shader實(shí)現(xiàn)多光源漫反射以及陰影,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • C#通過(guò)不安全代碼看內(nèi)存加載的示例詳解

    C#通過(guò)不安全代碼看內(nèi)存加載的示例詳解

    C#中類(lèi)型分為值類(lèi)型和引用類(lèi)型。這篇文章將用不安全代碼的地址,來(lái)看一下值類(lèi)型和引用類(lèi)型的存儲(chǔ),文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2022-07-07
  • 基于C#對(duì)用戶密碼使用MD5加密與解密

    基于C#對(duì)用戶密碼使用MD5加密與解密

    C#中常涉及到對(duì)用戶密碼的加密于解密的算法,其中使用MD5加密是最常見(jiàn)的的實(shí)現(xiàn)方式。本文總結(jié)了通用的算法并結(jié)合了自己的一點(diǎn)小經(jīng)驗(yàn),分享給大家
    2015-12-12
  • WCF和Remoting之間的消息傳輸

    WCF和Remoting之間的消息傳輸

    這篇文章介紹了WCF和Remoting之間的消息傳輸,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • Unity實(shí)現(xiàn)紅酒識(shí)別的示例代碼

    Unity實(shí)現(xiàn)紅酒識(shí)別的示例代碼

    本文主要介紹了如何通過(guò)Unity實(shí)現(xiàn)紅酒識(shí)別,可以實(shí)現(xiàn)識(shí)別圖像中的紅酒標(biāo)簽,返回紅酒名稱、國(guó)家、產(chǎn)區(qū)、酒莊、類(lèi)型、糖分、葡萄品種、酒品描述等信息,感興趣的可以學(xué)習(xí)一下
    2022-02-02
  • c# 模擬線性回歸的示例

    c# 模擬線性回歸的示例

    這篇文章主要介紹了c# 模擬線性回歸的示例,幫助大家利用c#進(jìn)行機(jī)器學(xué)習(xí),感興趣的朋友可以了解下
    2020-10-10
  • C#對(duì)文件進(jìn)行加密解密代碼

    C#對(duì)文件進(jìn)行加密解密代碼

    本文給大家分享的是使用C#對(duì)文件進(jìn)行加密解密的代碼,十分的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下。
    2015-07-07
  • C#實(shí)現(xiàn)給圖片加水印的方法

    C#實(shí)現(xiàn)給圖片加水印的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)給圖片加水印的方法,結(jié)合完整實(shí)例形式分析了C#常見(jiàn)的圖片水印操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2016-02-02

最新評(píng)論