我有一个列表框,显示使用数据模板格式化的装运项目(自定义类)(见下文)。模板中有一个border元素(我称之为gem),它显示哪些项目是活动的(未选中),哪些项目将是要添加产品的项目。
template.png
Shipment类(active)中有一个布尔属性,该属性在gem元素的click事件处理程序中设置。通常情况下,宝石应该像第一张图片中的一样暗,然后在激活时亮起。
我在datatemplate中设置了一个datatrigger来处理gem颜色的变化。
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Active}" Value="True">
<Setter TargetName="ActiveGem" Property="Background">
<Setter.Value>
<RadialGradientBrush>
<GradientStop Color="Red" Offset="0"/>
<GradientStop Color="#FF820000" Offset="1"/>
</RadialGradientBrush>
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding Active}" Value="False">
<Setter TargetName="ActiveGem" Property="Background">
<Setter.Value>
<RadialGradientBrush>
<GradientStop Color="Red" Offset="0"/>
<GradientStop Color="#FF820000" Offset="1"/>
</RadialGradientBrush>
</Setter.Value>
</Setter>
</DataTrigger>
</DataTemplate.Triggers>
但是,由于某种原因,当应用程序加载时,所有gem都会亮起,显示包都处于活动状态。
**由于StackOverflow的声誉限制,我还不能发布更多的超链接。下面的图像与上面的图像在同一个域中。
/外部图像/activeitems.png
我已经检查过所有项目实际上都是活动的=假,但是宝石总是亮着的。另外,当我运行click事件时,我会检查包集合并将all active=false设置为active,然后将发送者的templatedParent设置为active。
Dim ActiveShipments = From ship In ShipmentData _
Where ship.Active = True
For Each MyShipment As Shipment In ActiveShipments
MyShipment.Active = False
Next
Dim Gem As Border = sender
Dim ShipmentObject As ContentPresenter = Gem.TemplatedParent
ShipmentObject.Content.Active = True
宝石不会返回到未点亮的状态(它们一开始就不在)。它们只能保持点亮。有什么想法吗?
科丽
--奇怪的是,只有在第一次编辑时才出现在代码框中…立即修复。