2013-06-27 194 views
0

我正在開發Windows 8商店應用程序。我有一個ListView顯示項目列表。我必須根據所選項目更改所選列表項目的背景顏色。背景顏色是否可以做到這一點?我能夠改變適用於所有項目的選定項目的背景顏色。我想爲特定的選定項目做到這一點。動態更改所選列表視圖項背景顏色

在此先感謝。

回答

0

確實可以做!通常有兩種方法可以執行此操作:

首先,您可以將背景的值綁定到當前列表的選定項目。喜歡的東西:

<ListView 
Background="{Binding RelativeSource={RelativeSource Self}, Path=SelectedItem.Color}" 
..> 

爲了該特定代碼的工作,雖然,你要綁定到該項目必須有一個Color屬性,或者是刷機(如的SolidColorBrush)或顏色(我相信) 。您可以通過使用BindingConverter屬性來解決此問題,並將項目上的任何屬性(可能是項目本身,如果它是字符串)轉換爲正確的SolidColorBrush。

第二種方法是添加一個SelectionChanged事件並在代碼隱藏中將其更改。就像:

<ListView 
SelectionChanged="ColorSelector_SelectionChanged" 
..> 

private void ColorSelector_SelectionChanged(object sender, SelectionChangedEventArgs args) 
{ 
    if(args.NewValue != null) 
    { 
     //Somehow get the color you need 
     (sender as ListView).Background = varYouGot; // the Brush you made 
    } 
    else 
    { 
     (sender as ListView).Background = defaultValue; // Some default value, possibly new SolidColorBrush(Colors.Transparent) 
    } 
} 

希望這有助於!快樂編碼!

+0

謝謝你的回覆。不用這個代碼改變整個列表視圖的背景顏色,而不是選定的項目,這是我基本需要的。是否有可能? – androidGuy

+0

啊!誤讀,抱歉!所以你只是希望所選項目的選定背景根據所選項目而不同於其所選項目?這有點困難。你如何填寫名單?收藏?還是在Xaml?最好的方法是製作一個自定義ListViewItemStyle,覆蓋ItemContainerStyle並將其背景顏色綁定到內容。如果你給我更多的信息,我可以給你一個例子。 –