DataTemplateSelector旨在用於類型的數據更改。例如,假設您有一個基類,稱爲人和兩個繼承類教授和學生。你可以有一個名爲的人包含教授和學生。您將使用DataTemplateSelector在顯示教授對象時使用一個數據模板,在顯示學生對象時使用另一個數據模板。
DataTemplateSelector和的DataTemplate也有可能不是你想要什麼,因爲他們通常沒有什麼做的選擇。您選中某個項目(支票,紫色邊框等)時看到的所有UI元素都是ItemContainer的一部分。在運行時,DataTemplate放置在ItemContainer的內部,您可以通過編輯ContainerTemplate來更改此項。
在Expression Blend中,右鍵單擊您的ListView並選擇編輯其他模板 - >編輯生成的項目容器(ItemContainerStyle) - >編輯副本。您需要爲您的自定義容器指定一個名稱,並且我建議將它保存在應用程序級別而不是當前頁面(否則您將無法在其他頁面上使用它)。
當您給它一個名稱並單擊確定後,Blend將切換到您正在編輯容器(而不是頁面)的模式。確保你有國面板打開(窗口 - >國,如果你沒有看到它),你應該看到一堆狀態。您要編輯的名稱爲已選擇,它位於名爲SelectionStates的組中。
當您完成更改後,點擊按鈕對象和時間線面板看起來像一個向上箭頭的水平線(當你將鼠標懸停在這個按鈕,它會說「返回頂部範圍改爲[Page]「)。現在你又回到編輯頁面而不是編輯容器了。運行你的應用程序,你應該看到不同之處。
注意:使用此方法,您可以更改任何有關容器。諸如邊框之類的東西,或者使項目變大或變小或在3D空間中傾斜(使用屬性窗格中的變換組下的「投影」來傾斜)。儘管如此,您將無法顯示或隱藏部分DataTemplate。例如,當客戶未被選中時,您將無法隱藏客戶的名字。對於這些更改,您可能必須嘗試使用您自己的自定義DataTemplateSelector。但是我不知道是否有可能在DataTemplateSelector被要求生成模板時檢查是否選擇了一個項目。
開發支持,設計支持和更多的真棒善良的人:http://bit.ly/winappsupport
啊,我看。這就是我們最終做的順便說一句,它的工作原理。非常感謝! – 2013-02-28 11:31:50