Привет ребята я работаю над проектом в C# WPF, где мне нужно, чтобы отобразить статус клиента в ListView Так что у меня следующее перечисление, который определяет статус клиентаWPF ListView добавление изображений в ListViewItem во время выполнения
//Values used here for Bitwise Operations
public enum ClientStatus
{
NONE = 0,
NEWCLIENT = 1,
MONITORED = 2,
IMPORTAND = 4,
DISATISFIED = 8,
DETERIORATING = 16,
SATISFIED = 32
};
для преобразования каждого к определенной кисти я следующий код, Испытано и работает
[ValueConversion(typeof(Enums.ClientStatus), typeof(Brush))]
public class StateValueColorConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
Brush Brush = Brushes.Red;
if (value is Enums.ClientStatus)
{
Enums.ClientStatus sv = (Enums.ClientStatus)value;
switch (sv)
{
case Enums.ClientStatus.IMPORTAND:
Brush = Brushes.Blue;
break;
case Enums.ClientStatus.MONITORED:
Brush = Brushes.Purple;
break;
case Enums.ClientStatus.NEWCLIENT:
Brush = Brushes.Orange;
break;
case Enums.ClientStatus.SATISFIED:
Brush = Brushes.Green;
break;
case Enums.ClientStatus.DETERIORATING:
Brush = Brushes.Yellow;
break;
case Enums.ClientStatus.DISATISFIED:
Brush = Brushes.Red;
break;
}
}
return Brush;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
сделать Binding я сделал следующее, что не то, что наш преподаватель точно хотел
<GridViewColumn Header="Status" Width="110">
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBox Width="50" Background="{Binding Path=Status, Converter={StaticResource ColorConverter}}"></TextBox>
<TextBox Width="50" Background="{Binding Path=SatisFactory, Converter={StaticResource ColorConverter}}"></TextBox>
</StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
Нам нужно отобразить каждый из перечислений в другом цвете, однако клиент может иметь несколько статусов, т.е.
var status = ClientStatus.NEWCLIENT | ClientStatus.SATISFIED;
Это теперь будут возвращать INT значение 33
Моей проблемы сейчас я использовал два свойства в моем клиенте, чтобы показать отдельные статусы, которые неверны, нам нужно использовать побитовые операции, т. е.
if ((status & ClientStatus.NEWCLIENT) == ClientStatus.NEWCLIENT)
{
//do whatever
}
, так что я могу сделать код выше, но как бы я связывание на одно свойства, чтобы показать множественный цвета находится в одном gridviewcollumn, я поищите на форуме, но я пропустил его, если этот вопрос или что-то подобное было там
Я действительно не знаю, как сформулировать вопрос, так что я постараюсь его другими словами
Я хочу, чтобы отобразить все выбранные перечислений в столбце.
Спасибо за любую помощь или предложения Надежда Я сделал Sence
Спасибо Я понимаю, этот метод, я собираюсь попробовать это, и выведу результат: D –
Я сделал это таким образом, он работал меня, спасибо много –