【发布时间】:2011-05-05 02:12:15
【问题描述】:
在 ListView 中,我有一个 GridView,其中行背景的颜色取决于行的数据上下文中项目的属性。
目前我使用 ListView 的 ItemContainerStyle 中的触发器设置颜色:
<DataTrigger Binding="{Binding Path=State}" Value="Active">
<Setter Property="Background" Value="Red"/>
</DataTrigger>
<DataTrigger Binding="{Binding Path=State}" Value="Confirmed">
<Setter Property="Background" Value="Green"/>
</DataTrigger>
这很好用,但不是数据触发器中的固定颜色,而是我想绑定到颜色设置。我可以在设置器的 Value 属性中添加一个绑定,但是如果颜色设置发生更改,我希望 GridView 中的现有行颜色能够更新。 setter 中的绑定只会更新设置更改后添加的行的颜色。
我可以通过为我的设置或类似的东西订阅属性更改事件来编写自己的方法,但我希望有一个优雅的绑定技巧。
要求:
- 我的数据上下文中属性的不同值应该设置不同的颜色。
- 如果值发生变化,颜色应该会发生变化。
- 如果按值颜色设置发生更改,颜色也应更改。
【问题讨论】: