こんにちはみんな私はリストビューでクライアントのステータスを表示する必要がある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が返されます。
私の問題は、クライアントで2つのプロパティを使用して個別のステータスを表示することです。これは正しくないため、ビット演算を使用する必要があります。
if ((status & ClientStatus.NEWCLIENT) == ClientStatus.NEWCLIENT)
{
//do whatever
}
だから私は上記のコードを行うことができますが、1つのグリッドビュー列に複数の色を表示するために1つのプロパティをバインドするにはどうすればよいですか?フォーラムを検索しますが、この質問または同様のものがあった場合は見逃しました
質問の仕方がよくわからないので、言い換えてみます
選択したすべての列挙型を列に表示したい。
助けや提案をありがとう私が意味を作ったことを願っています