好吧,所以這只是一個想法,在我的腦海中浮現出一種'僞只寫'依賴屬性。我說排序,因爲我其實不想要存儲的值,而是我想要傳遞給setter的值設置其他屬性。作爲一個假設的例子,我想做到這一點...如何編寫僞只寫依賴項屬性?
<button UIHelper.Bounds="10,10,40,20" />
,而不是這個......
<button Canvas.Left="10" Canvas.Top="10" Width="40" Height="20" />
只是一個XAML打字方便的事情,讓我設置的實際四個屬性更容易打字,這要歸功於說一個只寫的附屬屬性。沿着摺疊CSS規則的方式思考。實際上,爲了這個效果,這裏的另一個...
<border UIHelper.BrushSpec="AliceBlue Red 2 4" />
的,而不是...
<border Background="AliceBlue" BorderBrush="Red" BorderThickness="2" CornerRadius="4" />
現在使用的第一爲例,一個想法是在內部存儲這樣的結構,然後同步它與現有的寬度,高度,Canvas.Left和Canvas.Top屬性,但我真的不打算讀回它,所以不需要。 (從技術上講,我可以完全忽略它的存儲,只需在propertychanged處理程序中調用ClearValue,但再次,它不是真正的讀取它,所以這只是爲了一致性。)
技術上我甚至不想/需要這個除了我的理解是如果你需要從XAML設置它,它必須是一個DP,因此我以後是DP。這將是完美的,如果我們可以設置一個直接的.NET屬性,因爲我可以設置實現,並根據需要進行自我重構,但是我知道您不能從XAML訪問.NET屬性,米回到這裏。
現在是我知道這個概念會經很多人,尤其是XAML較真地皺起了眉頭,但我問如何不爲什麼因此,如果沒有其他原因,考慮「這一演習它可以做'不'應該完成'。我甚至不建議這是我將使用的。我只是想更好地理解DP和XAML的限制,我發現這樣的練習確實很有幫助。
所以,想法??
中號
是的,我敢肯定你的後一條評論不會出於我上面提到的原因......你不能從XAML訪問非DP屬性。實際上,他們(MS)特別警告不要在.NET屬性獲取器或設置器中放置任何代碼,因爲它們在通過其XAML對等設備訪問時完全繞過。至於你的第一部分,那正是我上面所描述的。 – MarqueIV 2011-03-23 00:12:54