2013-06-27 158 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并将其背景颜色绑定到内容。如果你给我更多的信息,我可以给你一个例子。 –