uwp開(kāi)發(fā):數(shù)據(jù)模板選擇器

?這兩天,在做《簡(jiǎn)影uwp》的首頁(yè)推薦版塊時(shí),用到了數(shù)據(jù)模板選擇器,所以簡(jiǎn)單介紹一下。數(shù)據(jù)模板選擇器。顧名思義,就是可以選擇性的展示不同的數(shù)據(jù)模板。那么,什么時(shí)候用數(shù)據(jù)模板選擇器?怎么用呢?往下看:

應(yīng)用場(chǎng)景:

同樣是以我目前正在做的《簡(jiǎn)影uwp》為例,在做首頁(yè)推薦版塊時(shí),要展示的數(shù)據(jù)是不同的版塊的,都放在了一個(gè)集合中,這樣的話,如果直接將數(shù)據(jù)綁定到ListView或者GridView上顯示的話,是不可取的。雖然這些數(shù)據(jù)在一個(gè)集合內(nèi),但是因?yàn)榧蟽?nèi)每個(gè)種類(lèi)都不一樣,顯示的方式,展示的數(shù)據(jù)都不同,那么針對(duì)這種情況,就需要用到數(shù)據(jù)模板選擇器了。根據(jù)不同的種類(lèi),展示不同的模板。

實(shí)例演示:

第一步:要使用數(shù)據(jù)模板選擇器,首頁(yè)定義一個(gè)數(shù)據(jù)模板選擇器類(lèi)。讓這個(gè)類(lèi)繼承自:DataTemplateSelector。再定義需要展示的所以模板類(lèi)型。然后重寫(xiě)它的SelectTemplateCore方法即可。根據(jù)集合內(nèi)的類(lèi)型,返回不同的數(shù)據(jù)模板。代碼如下;

? public sealed class CustomDataTemplateSelector : DataTemplateSelector

? ? {

? ? ? ? public DataTemplate CollectionTemplate { get; set; }

? ? ? ? public DataTemplate ThreadTemplate { get; set; }

? ? ? ? public DataTemplate MuscicTemplate { get; set; }

? ? ? ? public DataTemplate VideoTemplate { get; set; }

? ? ? ? public DataTemplate TcTemplate { get; set; }

? ? ? ? protected override DataTemplate SelectTemplateCore(object item, DependencyObject container)

? ? ? ? {

? ? ? ? ? ? RecList list = item as RecList;

? ? ? ? ? ? if (list != null)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? switch (list.type)

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? case "collection":

? ? ? ? ? ? ? ? ? ? ? ? return CollectionTemplate;

? ? ? ? ? ? ? ? ? ? case "threadmusic":

? ? ? ? ? ? ? ? ? ? ? ? return MuscicTemplate;

? ? ? ? ? ? ? ? ? ? case "threadvideo":

? ? ? ? ? ? ? ? ? ? ? ? return VideoTemplate;

? ? ? ? ? ? ? ? ? ? case "movielines":

? ? ? ? ? ? ? ? ? ? ? ? return TcTemplate;

? ? ? ? ? ? ? ? ? ? default:

? ? ? ? ? ? ? ? ? ? ? ? return ThreadTemplate;

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? ? ? return null;

? ? ? ? }

? ? }

第二步:

在前臺(tái)定義需要的數(shù)據(jù)模板,即DataTemplate.要和上面后臺(tái)定義的對(duì)應(yīng)。

部分代碼截圖如下: 即是兩個(gè)不同的數(shù)據(jù)模板。

第三步:定義Listview或者GridView,然后引用定義的數(shù)據(jù)模板即可。

這樣,就可以實(shí)現(xiàn)根據(jù)集合內(nèi)的對(duì)象不同,展示不同的數(shù)據(jù)模板了。最后,上一張,正在做的這個(gè)頁(yè)面的圖示:

這樣就可以實(shí)現(xiàn)在一個(gè)列表內(nèi)展示不同類(lèi)型的內(nèi)容了。好了,今天就記到這里。歡迎熱愛(ài)uwp開(kāi)發(fā)的同學(xué)加入uwp開(kāi)發(fā)交流群193148992.共同學(xué)習(xí)交流。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容