2010-03-01 86 views
-1

我有一個列表框,顯示使用數據模板格式化的貨件(自定義類)(見下文)。模板中有一個邊框元素(我稱之爲Gem),用於顯示哪些項目處於活動狀態(未選中),哪些項目將添加到產品中。Expression Blend中的DataTriggers

template.png

有一個在運輸類(活動),這是在創業板元素的單擊事件處理程序中設置一個布爾屬性。通常情況下,寶石應該像第一幅圖像一樣黑暗,然後在激活時點亮。

我在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,只有在代碼框中的第一個編輯......現在固定露面。

+0

另外,我忘了問,有沒有一種方法來創建和編輯DataTriggers在Expression Blend 3?我看不出有什麼辦法可以做到這一點,如果可能的話,我想使用設計器,因爲我不確定上面用於綁定的語法。 Cory – CodeWarrior 2010-03-01 18:23:21

+0

需要查看更多代碼,特別是處理顏色更改的數據觸發器。 90%確定這是問題所在。 – Charlie 2010-03-01 22:14:19

+0

您好Cory,你有沒有找到一種方法來處理Expression Blend中的DataTriggers?我堅持:-s。謝謝! – 2010-11-24 08:48:40

回答

0

其實,我想通了。當我製作RadialGradiantBrushes時,我要麼不保存未點亮的照片,要麼複製/粘貼照片並且不會對其進行編輯或其他操作。數據觸發器正在正確觸發,但由於兩個梯度都是亮起的,所以看起來沒有任何事情發生。抱歉,添麻煩了!

科里斯