2011-10-27 89 views
0

我堅持一個很小的問題(一看)。 簡化我的情況的版本是這樣的:WPF,控制。依賴項屬性的值堆棧

我想多Background(例如)顏色被應用到SAME Control並能只是其中的一些(根據條件)清除。 WPF不提供此類功能,我只能爲每個DP設置一個值。

所以,我想申請先後然後Yellow然後Green顏色RedControl對象,然後能夠重置Red使控制進行Green背景(在另一方面,正在重置Green葉背景Red)。看起來很簡單,你有沒有創建過這樣的控制裝飾?我認爲DP內部使用這種行爲,但沒有公共的API。

請,不建議使用觸發器或其他任何種類的條件DP設置的,我真的需要單DP設置多個值,並能夠管理他們

回答

1

它不是一個好主意,說「做不建議「...無論如何,那麼它不可能,WPF不這樣做,你可能意味着價值precendence,但這個List是固定的,你不能只是添加另一層之間,有充分的理由。整個系統都依賴於此。否則,您無法設置一個值並使用觸發器來覆蓋它,並且不需要重新設置值。如果人們開始混淆這個列表,那麼動畫,Style繼承等等也是不可能的。

所以你不喜歡觸發想法...爲什麼?它正是爲了這一點。 好吧,如果你不喜歡它,如何爲Background1Background2等添加一個附加屬性。你也可以使背景作爲附加屬性,並使其可繼承。你可以做一個附加的行爲,聽取屬性更改並修改你的背景顏色。您可以使用MultiBinding或PriorityBinding。 很多東西是可能的,如果明顯的解決方案是不需要的:)

+0

我只是不能使用觸發器,因爲實現細節,這就是爲什麼我要求不要建議他們:) –

+0

如何將背景綁定到您的號碼數據上下文,使用值轉換器將數字轉換爲預定義的顏色列表,以便轉換器返回所需的顏色。那是解決它的一種方法。 – dowhilefor

+0

顏色數量不受限制,但我會考慮這種解決方案,謝謝 –