2014-10-17 2 views
0

У меня есть объект Student, который имеет:Как изменить цвет ListBoxItem на основе условия

private string name; 
private double feesOwed; 

У меня также есть ListBox, который будет иметь ItemSource установить на объект List заселенного с несколькими студентами. Я хотел бы, чтобы ListBox отображал это имя как текст и имел цвет фона, основанный на feeOwed. Что-то вроде

if(feesOwed>20) 
{ 
    if(feesOwed>100) 
    { 
      item.Background = "Red"; 
      return; 
    } 
    item.Background = "Yellow"; 
    return; 
} 

Все примеры, которые я нашел об этом, в основном говорят только о том, как получить чередующиеся цвета строк. Я знаю, что для этого потребуется привязка данных, но тема для меня довольно новая, и я не могу заставить ее работать динамически.

Я думаю, что правильный способ сделать это - реализовать IValueConverter, но это также немного сложно.

Благодаря

+0

У меня нет времени, чтобы решить пример. Что вам нужно, это «ItemTemplate» для списка. Там вы привязываете цвет фона элемента к элементу его 'feeOwed' с помощью конвертера, см.' IValueConverter'. Преобразователь возвращает цвет, основанный на значении 'feeOwed'. См. Это, например: http://blogs.msdn.com/b/bencon/archive/2006/05/10/594886.aspx –

ответ

1

вы можете использовать данные триггеров, как показано ниже

 <Style TargetType="ListBoxItem"> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding feesOwed}" Value="20"> 
       <Setter Property="Background" Value="Yellow"></Setter> 
      </DataTrigger> 
      <DataTrigger Binding="{Binding feesOwed}" Value="100"> 
       <Setter Property="Background" Value="Red"></Setter> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 

вы можете обратиться this ссылку

Смежные вопросы