2013-02-27 221 views
2

我有這樣一個ListView:造型ListView.SelectedItem - Windows應用商店的應用程序

<ListView ItemsSource="{Binding Source}" SelectionMode="Single" 
ItemTemplate="{StaticResource MyItemTemplate}" 
IsItemClickEnabled="True" ItemClick="ListView_OnItemClick"> 
</ListView> 

我想達到的目標,是風格,/點擊到的東西比其他元素不同的是,選擇的元素,當選擇另一個元素時再返回。對我來說最簡單的方法是,如果有某種方法可以更改所選項目的DataTemplate。如果那不可能,任何類型的解決方案都非常感謝。

我試過使用DataTemplateSelector,但我無法得到它的工作。不知道是否在所選項目改變時重新選擇模板。

回答

4

DataTemplateSelector旨在用於類型的數據更改。例如,假設您有一個基類,稱爲和兩個繼承類教授學生。你可以有一個名爲的人包含教授和學生。您將使用DataTemplateSelector在顯示教授對象時使用一個數據模板,在顯示學生對象時使用另一個數據模板。

DataTemplateSelector的DataTemplate也有可能不是你想要什麼,因爲他們通常沒有什麼做的選擇。您選中某個項目(支票,紫色邊框等)時看到的所有UI元素都是ItemContainer的一部分。在運行時,DataTemplate放置在ItemContainer的內部,您可以通過編輯ContainerTemplate來更改此項。

在Expression Blend中,右鍵單擊您的ListView並選擇編輯其他模板 - >編輯生成的項目容器(ItemContainerStyle) - >編輯副本。您需要爲您的自定義容器指定一個名稱,並且我建議將它保存在應用程序級別而不是當前頁面(否則您將無法在其他頁面上使用它)。

當您給它一個名稱並單擊確定後,Blend將切換到您正在編輯容器(而不是頁面)的模式。確保你有面板打開(窗口 - >國,如果你沒有看到它),你應該看到一堆狀態。您要編輯的名稱爲已選擇,它位於名爲SelectionStates的組中。

當您完成更改後,點擊按鈕對象和時間線面板看起來像一個向上箭頭的水平線(當你將鼠標懸停在這個按鈕,它會說「返回頂部範圍改爲[Page]「)。現在你又回到編輯頁面而不是編輯容器了。運行你的應用程序,你應該看到不同之處。

注意:使用此方法,您可以更改任何有關容器。諸如邊框之類的東西,或者使項目變大或變小或在3D空間中傾斜(使用屬性窗格中的變換組下的「投影」來傾斜)。儘管如此,您將無法顯示或隱藏部分DataTemplate。例如,當客戶未被選中時,您將無法隱藏客戶的名字。對於這些更改,您可能必須嘗試使用​​您自己的自定義DataTemplateSelector。但是我不知道是否有可能在DataTemplateSelector被要求生成模板時檢查是否選擇了一個項目。

開發支持,設計支持和更多的真棒善良的人:http://bit.ly/winappsupport

+1

啊,我看。這就是我們最終做的順便說一句,它的工作原理。非常感謝! – 2013-02-28 11:31:50

相關問題