例如,我通过绑定与我的员工创建了一个ListBox。
我想给所有收入超过10,000美元的员工上色。
谢谢
发布于 2011-01-31 07:04:37
最直接的方法是在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 (您应该使用MVVM),那么上面的代码就清晰多了:属性做什么很清楚,样式做什么也很清楚,测试也很容易,而且没有第三段代码隐藏在一个单独的文件中来完成所有的转换。
https://stackoverflow.com/questions/4845370
复制相似问题