-1

我有一个列表框,显示使用数据模板格式化的发货项目(自定义类)(见下文)。模板中有一个边框元素(我称它为 Gem),它显示哪个项目处于活动状态(未选择),哪个项目将添加产品。

模板.png

装运类 (Active) 中有一个布尔属性,该属性在 Gem 元素的单击事件处理程序中设置。通常情况下,Gem 应该像第一张图片一样是暗的,然后在激活时亮起。

我在 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 的声誉限制,我还不能发布更多超链接。下图与上图位于同一域。

/ExternalImages/ActiveItems.PNG

我检查了所有项目实际上都是 Active = False,但宝石总是亮着的。此外,当我运行 click 事件时,我会遍历 Package 集合并设置所有 Active = False,然后将发件人的 TemplatedParent 设置为活动状态。

    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

宝石不会回到未点亮的状态(它们一开始就没有)。它们只保持点亮状态。有任何想法吗?

科里

--奇怪的是,只出现在第一次编辑的代码框中......现在已修复。

4

1 回答 1

0

其实,我想通了。当我制作 RadialGradiantBrushes 时,我要么没有保存未点亮的,要么将点亮的复制/粘贴到它上面并且没有编辑它或其他东西。数据触发器正常触发,但由于两个渐变都是点亮的,所以看起来什么都没有发生。抱歉,添麻烦了!

科里

于 2010-03-02T16:12:44.787 回答