正在验证属性更改处理程序中附加的属性
本文关键字:属性 程序 验证 处理 | 更新日期: 2023-09-27 18:30:01
我正在为Windows Phone 8开发一个自定义控件,该控件派生自ItemsControl
,将有许多子对象(另一个自定义类)。它需要有一个附加属性IsMinonAxis
,其中一个子项只能设置一次,不能设置多次。因此,下面的代码将是我想要避免的问题。
<WPGraphControl:GraphControl>
<WPGraphControl:GraphLine GraphDataPoints="{Binding SpeedPoints}" WPGraphControl:GraphControl.IsMinonAxis="True" />
<WPGraphControl:GraphLine GraphDataPoints="{Binding AltitudePoints}" WPGraphControl:GraphControl.IsMinonAxis="True" />
</WPGraphControl:GraphControl>
问题是附加的属性附加到子控件,而不是父控件。在PropertyCHangedCallback
(作为RegisterAttached
的一部分注册为PropertyMetadata
的一部分)中,我可以获得正在为其设置属性的子对象,但我不能访问实际的控件实例(this
)来验证整个子控件集合,因为它是所有实例通用的静态方法。
我正在考虑的一个选项是附加另一个属性(内部),该属性将在添加子控件时附加,然后使用该属性在回调中访问父控件,并启动验证逻辑。对我来说,这听起来像是一个过于复杂的逻辑
你能建议一下处理这种情况的最佳方法是什么吗?
在GraphControl上拥有一个非附加属性可能会更容易,该属性将使用一个Element。我已经有一段时间没有做WinPhone XAML了,但在WPF中,这看起来像:
<wpgc:GraphControl MinorAxis="{Binding ElementName=Foo}">
<wpgc:GraphLine x:Name="Foo" />
<wpgc:GraphLine x:Name="Bar" />
</wpgc:GraphControl>
由于只能为属性指定一个值,因此这将确保只设置一个值。