Я знаю, что мой вопрос уже был задан и на него здесь уже было дано несколько ответов. Но я просто не могу заставить его работать так, как я хотел бы. Как указано в заголовке, я пытаюсь изменить цвет фона моей ячейки данных в зависимости от ее содержимого. Я относительно новичок в WPF, но я думаю, что решение - это конвертер в сочетании с привязкой. Цель состоит в том, чтобы изменить цвет фона ячейки в зависимости от свойства, называемого «Статус», которое представляет собой перечисление с четырьмя состояниями.
Я уже написал конвертер:
using System;
using System.Windows.Data;
using System.Drawing;
using System.Windows;
namespace Admin
{
[ValueConversion(typeof(Member.UserStatus), typeof(Brushes))]
public class StatusToColorConverter : IValueConverter
{
#region IValueConverter Member
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
var enumValue = (Member.UserStatus)value;
if(enumValue == Member.UserStatus.Change)
return Brushes.Red;
if(enumValue == Member.UserStatus.Import)
return Brushes.Blue;
if(enumValue == Member.UserStatus.Remove)
return Brushes.Orange;
if(enumValue == Member.UserStatus.Synced)
return Brushes.Green;
else
return DependencyProperty.UnsetValue;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
#endregion
}
}
Все идет нормально. Часть xaml выглядит так (после некоторого поиска в Google...)
<DataGrid.Columns>
<DataGridTemplateColumn Header="Status">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Status}" Background="{Binding Status, Converter={StaticResource StatusToColorConverter}}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
Я действительно не понимаю (пока), что такое DataGridTemplateColums и DataTemplates. Но я пробовал то же самое с CellStyle и другим способом, который я не могу вспомнить. Преобразователь имеет точку останова и вызывается во всех решениях, которые я пробовал. Но каким-то образом свойство «Фон», похоже, игнорирует возвращаемое преобразователем значение. Так что я предполагаю, что моя ошибка (или мое непонимание) имеет другой источник.
Кто-нибудь хочет указать мне правильное направление?