Silverlight 4.0 自定义控件Xaml元素
我有 控制: ControlX:IControlX和ControlY:IControlY ControlZ的列表属性为ControlX 接口: IControlX和IControlY:IControlX 我得到的标签是:Silverlight 4.0 自定义控件Xaml元素,silverlight-4.0,Silverlight 4.0,我有 控制: ControlX:IControlX和ControlY:IControlY ControlZ的列表属性为ControlX 接口: IControlX和IControlY:IControlX 我得到的标签是: <ControlZ> <ControlY> <ControlX></ControlX> <ControlX></ControlX>
<ControlZ>
<ControlY>
<ControlX></ControlX>
<ControlX></ControlX>
</ControlY>
</ControlZ>
在这里,我可以访问列表中的控件Y,但无法访问控件X
但如果我将标记顺序更改为:
<ControlZ>
<ControlY> </ControlY>
<ControlX></ControlX>
<ControlX></ControlX>
</ControlZ>
我可以得到列表中所有的对象
但这是不符合逻辑的,所以我需要保持标记顺序
你能推荐我吗。如何访问内部标签
谢谢你你不能那样做。除非在XAML中初始化属性,否则XAML不允许访问属性的属性
<Control:MyControl>
<Control:MyControl.Property1>
<!-- Assuming that Property1 is of type MyOtherControl -->
<Control:MyOtherControl Property="somevalue" />
</Control:MyControl.Property1>
</Control:MyControl>
要设置
Property1
属性的值,必须先实例化它。假设Property1Type
类型为Property1Type
的操作系统存在于同一名称空间中,并且内部属性(property
)的类型为InnerPropertyType
,也存在于同一名称空间中。您的代码应该类似于:
<Control:MyControl>
<Control:MyControl.Property1>
<Control:Property1Type>
<Control:Property1Type.Property>
<Control:InnerPropertyType />
</Control:Property1Type.Property>
</Control:Property1Type>
</Control:MyControl.Property1>
</Control:MyControl>
这类似于,例如:
<ListBox>
<ListBox.BorderBrush>
<ImageBrush>
<ImageBrush.Transform>
<ScaleTransform ScaleX="5"/>
</ImageBrush.Transform>
</ImageBrush>
</ListBox.BorderBrush>
</ListBox>
这应该可以解决一些问题,如果其他问题仍然存在,请更新您的问题;)
希望这有帮助:)