有没有办法知道第一次通过 XAML 绑定访问依赖属性,以便我可以在需要时实际“呈现”属性的值?
我有一个对象(从 Control 派生的类),它有几个 PointCollection 依赖属性,可能包含 100 个或 1000 个点。每个属性可能会以不同的方式排列点以用于不同类型的形状(折线、多边形等 - 它比这个更复杂,但你明白了)。通过模板,不同的 XAML 对象使用 TemplateBinding 来访问这些属性。由于我的对象使用模板,我永远不知道我的对象可能正在使用哪些 XAML 形状 - 所以我永远不知道它们可能绑定或不绑定到哪些属性。我只想在实际需要时填写这些 PointCollections。
通常在 .NET 中,我会在属性的 getter 中添加一些逻辑,但这些被 XAML 数据绑定绕过。
我需要一个 WPF 和 Silverlight 兼容的解决方案。
我希望有一个解决方案可以避免我的对象的用户带来任何额外的复杂性。
更新
我发现这样做的一种方法是使用Value Converters。在我的情况下,我有多个积分集合。有一个主要部门。包含数据通常形状的属性。在其他领域/环境中重复使用需要两个替代形状。
起初我有3个部门。道具。但是,我可以只拥有一个属性(通常的形状)并使用转换后的值将点转换为我想要的其他 2 个形状。这样做我只在控件中制作一组点。仅在使用时才会产生将点转换为次要形状的费用。现在我的主控件不需要预测数据需要如何查找控件中的每个可能的模板 - 现在是模板设计者的问题。
更新 2
当然 INotifyPropertyChanged 和常规属性是处理此问题的推荐方法。