0

我正在开发一个 Windows 8 应用商店应用程序。我有一个显示项目列表的 Listview。我必须根据所选项目更改所选列表项目的背景颜色。背景颜色因所选项目而异。是否可以做吗?我能够更改适用于所有项目的所选项目的背景颜色。我想为特定的所选项目执行此操作。

提前致谢。

4

1 回答 1

0

确实可以做到!通常有两种方法可以做到这一点:

首先,您可以将背景的值绑定到当前列表的选定项。就像是:

<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)
    }
}

希望这可以帮助!快乐编码!

于 2013-06-30T05:06:30.767 回答