有沒有辦法知道第一次通過XAML綁定訪問Dependency屬性,所以我實際上可以在需要時「呈現」屬性的值?延遲「呈現」WPF/Silverlight依賴屬性?
我有一個對象(派生自Control的類)有幾個PointCollection依賴屬性可能包含100或1000的點。每個屬性都可以按照不同類型的形狀(Polyline,Polygon等等)使用不同的方式來安排點 - 它比這更復雜,但你明白了)。通過模板,不同的XAML對象使用TemplateBinding來訪問這些屬性。由於我的對象使用模板,我永遠不知道XAML形狀可能會用於我的對象 - 所以我永遠不知道它們可能綁定或不綁定到的屬性。我只想在實際需要時填入這些PointCollections。
通常在.NET中,我只想在Property的getter中添加一些邏輯,但是這些邏輯被XAML數據綁定繞過。
我需要一個WPF和Silverlight兼容的解決方案。
我很喜歡這個解決方案,可以避免爲我的對象的用戶帶來額外的複雜性。
更新我發現這樣做是使用Value Converters
的一種方式。在我的情況下,我有多個點集合。有一個主要的部門。包含數據通常形狀的屬性。需要在其他區域/上下文中重複使用兩種替代形狀。
起初我有3局。道具。但是,我可能只有一個屬性(通常的形狀),並使用轉換後的值將這些點轉換爲其他2個所需的形狀。這樣做,我只能在控件中創建一組點。將點轉換爲次形狀的費用僅在使用時發生。現在,我的主要控件不需要預測數據如何查找控件上引發的每個可能的模板 - 現在是模板設計器的問題。
更新2
當然INotifyPropertyChanged的和經常性的來處理這個推薦的方法。
我仍然在試圖弄清爲什麼這種解決方案不適合我的情況。也許這在綁定模板時不起作用? – Aardvark 2009-10-04 22:46:31