我有
控件:
ControlX:IControlX和ControlY:IControlY
ControlZ有一个ControlX的List属性
接口:
IControlX和IControlY:IControlX
我得到的标签是:
<ControlZ>
<ControlY>
<ControlX></ControlX>
<ControlX></ControlX>
</ControlY>
</ControlZ>
这里我可以访问列表中的Control,但不能访问Control 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
类型的Property1
os,内部属性(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>
这应该可以解决一些问题,如果其他问题仍然存在,请更新您的问题;)
希望这对你有帮助