Раскрашивание элемента в виде списка

Хорошо, так как я новичок в WPF, я, вероятно, задаю простой вопрос, но я искал решение за последние 5 часов и ничего не нашел. У меня есть класс, который содержит значение bool, указывающее, должна ли строка ListView быть окрашена или нет. Я привязываю значения остальных столбцов, но поскольку для цветов не существует столбца, я застреваю, пытаясь понять, как это сделать.

Я попробовал Style s, попробовал DataTemplate (мне потребовалось некоторое время, чтобы понять, куда их поместить, и все, кроме того, что я понял) и некоторый вариант с функцией в коде С#, который я не знал, как для вызова.

Я знаю, что я, вероятно, не дал достаточной информации или какого-либо кода, но дайте мне знать, что вам нужно, чтобы помочь мне, и я опубликую его, мне так жаль об этом, но снова я новичок. Я даже не знаю, что вам нужно.

Это класс, с которым я работаю:

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, кроме bool, который должен указывать, должна ли строка быть цветной или нет.

UPDATE

Это 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}">
 </gridviewcolumn></gridviewcolumn></gridviewcolumn></gridviewcolumn></gridview.columns>
 </gridview>
 </listview.view>
 </listview>

Это то, что у меня есть.

3 ответа

Вы можете покрасить свои объекты ListViewItems с помощью свойства ItemContainerStyle:

<listview.itemcontainerstyle>
 
 </listview.itemcontainerstyle>


Привет, попробуйте с помощью 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>
 </window.resources>

Надеюсь, это даст вам представление.


Вот ссылка на проект, который демонстрирует то, что, я считаю, вы ищете: http://www.codeproject.com/Articles/18585/Highlighting-Items-in-a-WPF-ListView. Вам нужно будет изменить код для кода конвертера, так как ваше свойство является логическим, а не целочисленным, и измените привязку к вашему имени свойства.

licensed under cc by-sa 3.0 with attribution.