大家好,我正在使用 C# WPF 开发一个项目,我需要在列表视图中显示客户端的状态所以我有以下定义客户端状态的枚举
//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();
}
}
做绑定我做了以下,这不是我们的讲师真正想要的
<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
}
所以我可以执行上面的代码,但是我将如何对一个属性进行绑定以在一个 gridviewcolumn 中显示多种颜色,我搜索了论坛,但如果有这个问题或类似的问题,我会错过它
我不确定如何陈述这个问题,所以我会换一种说法
我想在列中显示所有选定的枚举。
感谢您的任何帮助或建议希望我有意义