C# 为列表视图中的项目着色
好的,因为我是WPF的新手,我可能会问一个简单的问题,但在过去的5个小时里,我一直在寻找解决方案,但什么也没有找到。C# 为列表视图中的项目着色,c#,wpf,listview,C#,Wpf,Listview,好的,因为我是WPF的新手,我可能会问一个简单的问题,但在过去的5个小时里,我一直在寻找解决方案,但什么也没有找到。 我有一个类,它包含一个bool值,指示ListView行是否应该着色。 我正在绑定其余列的值,但由于没有颜色列,我一直在尝试如何进行绑定 我尝试了Styles,尝试了DataTemplates(我花了一些时间来理解它们放在哪里,但我找到了答案)和一些带有C代码中函数的选项,我不知道如何调用 我知道我可能没有提供足够的信息或任何代码,但让我知道你需要什么来帮助我,我会发布它,对此我
我有一个类,它包含一个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 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>
这就是我目前拥有的。这里有一个项目链接,展示了我相信您正在寻找的内容:。您需要更改转换器代码的代码,因为您的属性是布尔值而不是整数,并更改与属性名称的绑定。您好,请使用转换器进行尝试
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}}" />
公共类booltocorconverter:IValueConverter
{
公共对象转换(对象值、类型targetType、对象参数、System.Globalization.CultureInfo区域性)
{
if(值为bool&(bool)值)
返回新的SolidColorBrush(颜色为红色);
其他的
返回null;
}
公共对象转换回(对象值、类型targetType、对象参数、System.Globalization.CultureInfo区域性)
{
抛出新的NotImplementedException();
}
}
我希望这会给您一个想法。您可以使用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>
请展示您正在使用的XAML,我如何看到它与我的类一起工作,而不是与该示例中的fruit类一起工作?它正在工作!谢谢,把它作为一个答案贴出来,这样我就可以为其他人接受了。谢谢!首先谢谢你,我已经看到了这个选项,但是我被代码缠住了。我不知道该把我在这个例子上坐了45分钟的东西放在哪里,但什么都不起作用。你对哪些部分感到困惑?转换器只是您添加到项目中的一个类。数据触发器样式代码可以放在单独的资源文件中。你下载了这个项目吗?