Пользовательские элементы управления Xaml - PullRequest
0 голосов
/ 04 мая 2011

У меня есть

элементы управления:

ControlX: IControlX и ControlY: IControlY

ControlZ имеет свойство списка ControlX

Интерфейсы:

IControlX и IControlY: IControlX

Теги, которые я получаю:

<ControlZ>

        <ControlY>

            <ControlX></ControlX>

             <ControlX></ControlX>

        </ControlY>

</ControlZ>

Здесь я могу получить доступ к ControlY в списке, но не могу получить доступ к Control X.

Но если я изменю последовательность тегов следующим образом:

<ControlZ>

        <ControlY> </ControlY>

        <ControlX></ControlX>

         <ControlX></ControlX>       

</ControlZ>

Я могу получить все объекты в списке.

Но это не логично, поэтому мне нужно поддерживать последовательность тегов.

Можете ли вы предложить мне.Как я могу получить доступ к внутренним тегам?

Спасибо

Ответы [ 2 ]

0 голосов
/ 04 мая 2011

Чтобы установить значение свойства Property1, вы должны сначала создать его экземпляр.Допустим, что Property1 os типа 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>

Это должно решить некоторые из проблем, если другие не исчезли, пожалуйста, обновите ваш вопрос;)

Надеюсь, это поможет:)

0 голосов
/ 04 мая 2011

Вы не можете этого сделать.XAML не позволяет вам обращаться к свойствам свойств, если вы не инициализируете их в XAML.

<Control:MyControl>

  <Control:MyControl.Property1>

       <!-- Assuming that Property1 is of type MyOtherControl -->
       <Control:MyOtherControl Property="somevalue" />

 </Control:MyControl.Property1>

</Control:MyControl>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...