我正在开发一个 Windows 8 应用商店应用程序。我有一个显示项目列表的 Listview。我必须根据所选项目更改所选列表项目的背景颜色。背景颜色因所选项目而异。是否可以做吗?我能够更改适用于所有项目的所选项目的背景颜色。我想为特定的所选项目执行此操作。
提前致谢。
我正在开发一个 Windows 8 应用商店应用程序。我有一个显示项目列表的 Listview。我必须根据所选项目更改所选列表项目的背景颜色。背景颜色因所选项目而异。是否可以做吗?我能够更改适用于所有项目的所选项目的背景颜色。我想为特定的所选项目执行此操作。
提前致谢。
确实可以做到!通常有两种方法可以做到这一点:
首先,您可以将背景的值绑定到当前列表的选定项。就像是:
<ListView
Background="{Binding RelativeSource={RelativeSource Self}, Path=SelectedItem.Color}"
..>
但是,为了使该特定代码正常工作,您绑定到的项目必须具有 Color 属性,该属性可以是 Brush(例如 SolidColorBrush)或 Color(我相信)。您可以通过使用Binding
'Converter
属性并将项目上的任何属性(可能是项目本身,如果它是一个字符串)转换为正确的 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)
}
}
希望这可以帮助!快乐编码!