有没有办法知道第一次通过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