【发布时间】:2014-01-16 21:08:03
【问题描述】:
我有一个 ListBox,它对内容使用数据绑定(绑定到 ObservableCollection),并使用 ItemTemplate 进行布局。在 ItemTemplate 中,有一个显示日期的 TextBlock(来自 ObservableCollection)和一个彩色矩形。
我希望矩形的填充颜色根据日期变化(表示年龄)。但是,由于 Rectangle 本身并没有绑定到日期(而且我不知道它是如何绑定的),所以我无法让 DataTrigger 来改变填充颜色。
还有其他方法可以让 Rectangle 颜色由数据绑定控制吗?
编辑:
根据要求,这是我的 ListBox ItemTemplate 的(简化)副本。现在,矩形的填充是一种固定颜色,但我想根据 targetstartdate 字段对其进行更改。
<ListBox Name="listBox1" ItemsSource="{Binding Path=testList}">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="1*" />
</Grid.ColumnDefinitions>
<Rectangle Fill="#FF009A00" Width="5" StrokeThickness="1" Margin="0,1,4,1"/>
<TextBlock Text="{Binding targetstartdate}" Margin="0,0,0,4" Foreground="#FF009A00" />
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
【问题讨论】:
-
你不需要任何
Converter...你可以使用DataTrigger。添加你的DataTemplate,我会告诉你的。 -
McCarnagle 几乎为您准备好了。您需要做的就是在 Convert 方法中定义您的转换器逻辑,然后绑定它,所以他将 Stroke="{Binding Date ... 在第一个代码片段中,用 Stroke="{Binding targetstartdate 替换它,因为那是您的 var 的实际名称。
-
查看它,我收回它......它看起来不像你可以用
DataTrigger做到这一点。起初我以为你只是想要某些日期来改变颜色,但仔细研究后发现它比我最初想象的要复杂得多。即使有可能,并且您希望在不同的日期范围内使用不同的颜色,那么您仍然需要使用Converter方法。