在ListBox中设置所选对象的其他属性

时间:2011-01-30 20:36:55

标签: c# wpf listbox

例如,我有一个带有我的员工的ListBox,通过绑定。

我想为所有收入超过10,000美元的员工上色。

由于

1 个答案:

答案 0 :(得分:0)

最直接的方法是在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(你应该这样),上面的内容真的要清晰得多:它清楚属性是什么,它很清楚样式的作用,它很容易测试,并且没有第三段代码隐藏在单独执行所有翻译的文件。