Самый простой способ - реализовать свойство в Employee
, которое возвращает строковое значение, а затем проверить строковое значение в триггере данных стиля.Например:
public string SalaryRange
{
get
{
if (salary <= LowRange)
{
return "Low";
}
if (salary <= MiddleRange)
{
return "Middle";
}
return "High";
}
}
Затем в XAML реализуйте стиль, который использует триггер данных, например:
<Style TargetType = "ListBoxItem">
<Style.Triggers>
<DataTrigger Binding="{SalaryRange}" Value="Low">
<Setter Property="Foreground" Value="AliceBlue"/>
</DataTrigger>
<DataTrigger Binding="{SalaryRange}" Value="Middle">
<Setter Property="Foreground" Value="Fucschia"/>
</DataTrigger>
<DataTrigger Binding="{SalaryRange}" Value="Middle">
<Setter Property="Foreground" Value="Goldenrod"/>
</DataTrigger>
</Style.Triggers>
</Style>
Многие люди узнают о преобразователях значений и очарованы всемиидея использовать их для такого рода вещей.Но если вы используете MVVM (что и должно быть), вышеприведенное действительно намного чище: понятно, что делает свойство, понятно, что делает стиль, его легко протестировать, и нет третьего фрагмента кода, скрывающегося вотдельный файл, который выполняет весь перевод.