2011-08-11 35 views
0

我正在使用WPF爲例。假設我們有一個控制X,並且我們將它的背景設置爲一個圖像。然後我們希望在mouseover上沒有背景圖片。這可以通過x:Null來實現。但是,如果我們不指定x:Null它保持相同的圖像。WPF屬性和x:空等

我想爲不支持WPF的平臺創建自定義皮膚引擎。我想弄清楚如何重現這種行爲。問題是,如果我有一個類XControlStyle和這個類的兩個實例正常狀態和一個鼠標懸停然後它不是很明顯如何實現我所做的WPF ..

因爲設置例如mouseover.Backgroundimage = null它不能告訴用戶是否將其設置爲null或默認情況下爲null ..這個問題是更糟糕的值類型..設置所有屬性兩次不是一個優雅的解決方案..此外,我需要一個解決方案,以使BackgroundImage像它從未設置。我想出了3個解決方案(通過屬性,字典類來存儲,在類包裝器中包裝屬性值),但儘管我實現了最後一個我不滿意。
閱讀MSDN文檔受到啓發,我認爲他們以某種方式將這些數據存儲爲元數據?所以我想知道元數據是否是我的問題的解決方案.. 任何想法?

回答

0

這些事情是通過dependency property value precedence完成的,有一個值查找系統和找到的值的優先級最高的選擇。依賴屬性本身就像詞典一樣,並且在各個層次中有一些屬性,例如元素本身和樣式。這個系統非常複雜,我認爲複製它是一個巨大的項目。