Вложенные элементы управления и свойства - PullRequest
0 голосов
/ 22 февраля 2010

У меня есть UserControlB, который предоставляет свойство Title типа string. Затем у меня есть UserControlA, который содержит один UserControlB и предоставляет свойство MyNestedControl, которое возвращает экземпляр UserControlB.

На моей главной странице я объявляю UserControlA и пытаюсь установить значение свойства Title следующим образом MyNestedControl.Title = "ABC".

Однако Visual Studio выдает ошибку компиляции, говоря, что Title не существует в типе UserControlA.

Возможен ли этот тип вложений через xaml? Пожалуйста, смотрите ниже полный код.

Большое спасибо, Bruno

<UserControlB>
    <TextBlock x:Name="txtBlock" />
</UserControlB>

public partial class UserControlB : UserControl {
  public string Title
  {  
    get { return this.txtBlock.Text; }
    set { this.txtBlock.Text = value; }
  }
}

<UserControlA>
    <local:UserControlB x:Name="userControlB" />
</UserControlA>

public partial class UserControlA : UserControl {
  public UserControlB MyNestedControl
  {
    get { return this.userControlB; }
  }
}

<MainPage>
    <local:UserControlA x:Name="userControlA" MyNestedControl.Title="ABC" />
</MainPage>

Ответы [ 3 ]

1 голос
/ 24 февраля 2010

Вы используете синтаксис для прикрепленных свойств, чтобы попытаться установить «вложенное» свойство.

Silverlight ищет свойство 'Title', определенное в классе 'MyNestedControl' для класса 'UserControlA'.

Этот тип вложений невозможен (и не желателен - вы нарушаете закон Деметры) в Xaml.

1 голос
/ 22 февраля 2010

Я думаю, что вы должны сделать нужные свойства доступными через xaml DependencyProperties .

0 голосов
/ 22 февраля 2010

Попробуйте использовать пользовательский контроль CustomControl.

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