着色列表视图中的项目

时间:2013-01-04 14:05:49

标签: c# wpf listview

好了,因为我是WPF的新手,我可能会问一个简单的问题,但是我在过去的5个小时里一直在搜索解决方案而没有找到任何解决方案。
我有一个类,它包含一个bool值,表示ListView行是否应该是彩色的 我绑定了其余列的值,但由于没有颜色列,我一直试图弄清楚如何去做。

我试过了Style s,尝试了DataTemplate s(我花了一些时间来理解把它们放在哪里以及除了我想出来之外的所有内容)以及一些带有C#代码功能的选项不知道怎么打电话。

我知道我可能没有提供足够的信息或任何代码,但让我知道你需要什么来帮助我,我会发布它,我很抱歉这个但是我又是新的我甚至不知道你需要什么。

这是我正在上课的课程:

        public class ReportRow
{
    public string ProductID { get; set; }
    public int SideA { get; set; }
    public int SideB { get; set; }
    public string Workers { get; set; }

    public bool Equality { get; set; }
}

除了bool之外,所有内容都显示在ListView中,应该表明该行是否应该是彩色的。

更新

这是我正在使用的ListView

            <ListView Height="118" HorizontalAlignment="Right" Name="ReportView" VerticalAlignment="Top" Width="390" HorizontalContentAlignment="Right" Grid.Row="1" ItemsSource="{Binding ReportRows}" >
        <ListView.View>
            <GridView>
                <GridView.Columns>
                    <GridViewColumn Header="Product" Width="60" DisplayMemberBinding="{Binding ProductID}" />
                    <GridViewColumn Header="SideA" Width="60" DisplayMemberBinding="{Binding SideA}"/>
                    <GridViewColumn Header="SideB" Width="60" DisplayMemberBinding="{Binding SideB}"/>
                    <GridViewColumn Header="Workers" DisplayMemberBinding="{Binding Workers}"/>
                </GridView.Columns>
            </GridView>
        </ListView.View>
    </ListView>

这就是我现在所拥有的。

3 个答案:

答案 0 :(得分:2)

嗨,请尝试使用Converter

    public class BoolToColorConverter : IValueConverter
{

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (value is bool && (bool)value)
            return new SolidColorBrush(Colors.Red);
        else
            return null;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

<Window.Resources>
    <conv:BoolToColorConverter x:Key="boolToColorConverter"/>
</Window.Resources>

 <GridViewColumn Header="Product" Width="60" DisplayMemberBinding="{Binding ProductID}" BackGround="{Binding Equality, Converter={StaticResource boolToColorConverter}}" />

我希望这会给你一个想法。

答案 1 :(得分:2)

您可以使用ItemContainerStyle属性为您的ListViewItem着色:

        <ListView.ItemContainerStyle>
            <Style TargetType="{x:Type ListViewItem}">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding Path=Equality}" Value="true">
                        <Setter Property="Background" Value="ColorWhenTrue"/>
                    </DataTrigger>
                    <DataTrigger Binding="{Binding Path=Equality}" Value="false">
                        <Setter Property="Background" Value="ColorWhenFalse"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </ListView.ItemContainerStyle>

答案 2 :(得分:0)

这是一个项目链接,用于演示我相信您正在寻找的内容:http://www.codeproject.com/Articles/18585/Highlighting-Items-in-a-WPF-ListView。您将需要更改转换器代码的代码,因为您的属性是布尔值而不是整数,并将绑定更改为您的属性名称。