Я пытаюсь преобразовать значение, используя два пороговых значения, вызов базы данных вернет три переменные
Double Score;
Double LowerThreshold;
Double HigherThreshold;
Если оценка ниже нижнего порога, тогда будет показано красное изображение, если он находится между двумя порогами, тогда будет отображаться желтый, а если он выше, чем верхний порог, то будет показан зеленый.
В настоящее время я использую пользовательский ValueConverter, но я не уверен, что это лучшийспособ сделать это.Я объединяю верхний и нижний пороги вместе, чтобы они выглядели как «30,50», а затем анализирую значения из строки и определяю, какое изображение отображать.
Это код, который я использую дляValueConverter
public class ScoreConverter : IValueConverter
{
public object Convert(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value is double)
{
if (parameter is string)
{
if ((parameter as string).Contains(","))
{
string[] thresholds = (parameter as string).Split(',');
int lowerThreshold;
int upperThreshold;
bool success;
success = int.TryParse(thresholds[0], out lowerThreshold);
if (!success)
return "Error";
success = int.TryParse(thresholds[1], out upperThreshold);
if (!success)
return "Error";
if ((double)value < lowerThreshold)
{
//red
return "/Red32.png";
}
else if ((double)value > upperThreshold)
{
//green
return "/Green32.png";
}
else
{
//amber
return "/Amber32.png";
}
}
}
}
return "Error";
}
public object ConvertBack(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return "Not Possible";
}
}
Буду признателен за любые предложения по лучшему подходу,
Спасибо
РЕДАКТИРОВАТЬ
Решено использоватьследующий код, сервер возвращает следующую структуру
public class ScoreInformation
{
public double Score { get; set; }
public double lowerThreshold { get; set; }
public double upperThreshold { get; set; }
}
И это код, который преобразует его и отображает правильное изображение
public object Convert(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value is ScoreInformation)
{
ScoreInformation si = (ScoreInformation)value;
if (si.Score < si.lowerThreshold)
{
return "Red32.png";
}
else if (si.Score > si.upperThreshold)
{
//green
return "Green32.png";
}
else
{
//amber
return "Orange32.png";
}
}
return "Grey32.png";
}