我有一個列表框,顯示使用數據模板格式化的貨件(自定義類)(見下文)。模板中有一個邊框元素(我稱之爲Gem),用於顯示哪些項目處於活動狀態(未選中),哪些項目將添加到產品中。Expression Blend中的DataTriggers
有一個在運輸類(活動),這是在創業板元素的單擊事件處理程序中設置一個布爾屬性。通常情況下,寶石應該像第一幅圖像一樣黑暗,然後在激活時點亮。
我在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
我已經檢查了所有的項目都在積極實際上=假,但創業板始終點亮此外,當我運行單擊事件時,我會遍歷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
寶石不回自己的點亮狀態(這是他們永遠是擺在首位)。他們只保持點燃。有任何想法嗎?
科里斯
--Oddly,只有在代碼框中的第一個編輯......現在固定露面。
另外,我忘了問,有沒有一種方法來創建和編輯DataTriggers在Expression Blend 3?我看不出有什麼辦法可以做到這一點,如果可能的話,我想使用設計器,因爲我不確定上面用於綁定的語法。 Cory – CodeWarrior 2010-03-01 18:23:21
需要查看更多代碼,特別是處理顏色更改的數據觸發器。 90%確定這是問題所在。 – Charlie 2010-03-01 22:14:19
您好Cory,你有沒有找到一種方法來處理Expression Blend中的DataTriggers?我堅持:-s。謝謝! – 2010-11-24 08:48:40