Установить другое свойство выделенных объектов в ListBox - PullRequest
0 голосов
/ 30 января 2011

Например, у меня есть ListBox с моими сотрудниками через привязку.

Я хочу раскрасить всех сотрудников, которые зарабатывают более 10 000 $.

Спасибо

1 Ответ

0 голосов
/ 31 января 2011

Самый простой способ - реализовать свойство в 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 (что и должно быть), вышеприведенное действительно намного чище: понятно, что делает свойство, понятно, что делает стиль, его легко протестировать, и нет третьего фрагмента кода, скрывающегося вотдельный файл, который выполняет весь перевод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...