C# WPF Listview 如何设置某一行的颜色

比如listview里边包含了姓名,年龄两项,如何将年龄大于90岁的行的所有文字变红... 比如listview里边包含了姓名,年龄两项,如何将年龄大于90岁的行的所有文字变红 展开
 我来答
greystar_cn
推荐于2017-12-16 · 知道合伙人软件行家
greystar_cn
知道合伙人软件行家
采纳数:16407 获赞数:17260
本人主要从事.NET C#方向的技术开发工作,具有10多年的各类架构开发工作经验。

向TA提问 私信TA
展开全部

你得自己写个转换器,在绑定模板中将某个属性转换从而返回背景色,即可

 

<Window x:Class="WpfApplication1.MainWindow"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        xmlns:local="clr-namespace:WpfApplication1"

        Title="MainWindow" Height="350" Width="525">

    <Grid>

        <Grid.Resources>

            <local:BGConvert x:Key="bgconvert" ></local:BGConvert>

        </Grid.Resources>

        <ListView  Name="listView" >

            <ListView.View>

                <GridView >

                    <GridViewColumn DisplayMemberBinding="{Binding Name}" 

Header="Name" Width="120"/>

                    <GridViewColumn 

Header="Age" Width="120">

                        <GridViewColumn.CellTemplate>

                            <DataTemplate>

                                <StackPanel Background="{Binding Path=Age,Converter={StaticResource bgconvert} }">

                                    <TextBlock Text="{Binding Age}"></TextBlock>

                                </StackPanel>

                            </DataTemplate>

                        </GridViewColumn.CellTemplate>

                    </GridViewColumn>

                </GridView>

            </ListView.View>

        </ListView>

    </Grid>

</Window>


using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Data;

using System.Windows.Documents;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Imaging;

using System.Windows.Navigation;

using System.Windows.Shapes;

namespace WpfApplication1

{

    /// <summary>

    /// MainWindow.xaml 的交互逻辑

    /// </summary>

    public partial class MainWindow : Window

    {

        public MainWindow()

        {

            InitializeComponent();

            this.Loaded += MainWindow_Loaded;

        }

        void MainWindow_Loaded(object sender, RoutedEventArgs e)

        {

            List<Person> ps = new List<Person>();

            ps.Add(new Person() { Name = "Tom", Age = 80 });

            ps.Add(new Person() { Name = "jack", Age = 91 });

            listView.ItemsSource = ps;

        }

    }

    public class Person

    {

        public string Name { get; set; }

        public int Age { get; set; }

    }

    public class BGConvert : IValueConverter

    {

        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)

        {

            if((int)value>90)

            {

                return new SolidColorBrush(Colors.Red);

            }

            else

                return new SolidColorBrush(Colors.White);

        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)

        {

            throw new NotImplementedException();

        }

    }

}

printf59277
2015-07-08 · TA获得超过1080个赞
知道大有可为答主
回答量:1812
采纳率:33%
帮助的人:1277万
展开全部
你在添加listview的时候 ,根据年龄的值来设置每一项的ListViewItem的背景色就可以了,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式