【发布时间】:2013-06-24 12:42:58
【问题描述】:
我正在开发 Windows 8 应用商店应用程序。我有一个显示项目列表的 Listview。我必须根据所选项目更改所选列表项目的背景颜色。背景颜色因所选项目而异。是有可能吗?我能够更改适用于所有项目的选定项目的背景颜色。我想为特定的选定项目执行此操作。
提前致谢。
【问题讨论】:
标签: listview windows-store-apps
我正在开发 Windows 8 应用商店应用程序。我有一个显示项目列表的 Listview。我必须根据所选项目更改所选列表项目的背景颜色。背景颜色因所选项目而异。是有可能吗?我能够更改适用于所有项目的选定项目的背景颜色。我想为特定的选定项目执行此操作。
提前致谢。
【问题讨论】:
标签: listview windows-store-apps
确实可以做到!通常有两种方法可以做到这一点:
首先,您可以将背景的值绑定到当前列表的选定项。比如:
<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)
}
}
希望这会有所帮助!快乐编码!
【讨论】: