silverlight 4.0 -自定义控件Xaml元素



我有

控件:

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>

这应该可以解决一些问题,如果其他问题仍然存在,请更新您的问题;)

希望这对你有帮助

最新更新