【问题标题】:Dynamically change selected list view item background color动态更改选定列表视图项的背景颜色
【发布时间】:2013-06-24 12:42:58
【问题描述】:

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

提前致谢。

【问题讨论】:

    标签: listview windows-store-apps


    【解决方案1】:

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

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

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

    为了使特定代码能够正常工作,您要绑定的项目必须具有 Color 属性,该属性可以是 Brush(例如 SolidColorBrush)或 Color(我相信)。您可以通过使用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)
        }
    }
    

    希望这会有所帮助!快乐编码!

    【讨论】:

    • 感谢您的回复。此代码不会更改整个列表视图的背景颜色,而不是我基本上需要的选定项目。有可能吗?
    • 啊!看错了,不好意思!因此,您只是希望所选项目的所选背景与基于所选项目的背景不同?这有点难。你是如何填写清单的?有收藏吗?还是在 Xaml 中?最好的方法是创建一个自定义 ListViewItemStyle,覆盖 ItemContainerStyle 并将其背景颜色绑定到内容。如果你给我更多的信息,我可以给你一个例子。
    猜你喜欢
    • 2016-01-15
    • 1970-01-01
    • 2015-01-13
    • 1970-01-01
    • 2011-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多