3

好的,因为我是 WPF 的新手,所以我可能会问一个简单的问题,但我在过去 5 个小时里一直在寻找解决方案,但一无所获。
我有一个类,它包含一个布尔值,指示该ListView行是否应该着色。
我正在绑定其余列的值,但由于没有颜色列,我一直试图弄清楚如何去做。

我尝试了Styles,尝试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; }
}

一切都显示在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>

这是我目前拥有的。

4

3 回答 3

2

嗨尝试使用转换器

    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}}" />

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

于 2013-01-04T14:24:04.020 回答
2

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

        <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>
于 2013-01-04T14:37:00.807 回答
0

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

于 2013-01-04T14:15:34.693 回答