none
Как получить доступ к пользовательскому контролу на Page из дочернего UserControl? RRS feed

  • Вопрос

  • У меня есть пользовательский контрол, который выводит сообщения в заголовке сайта. У контрола публичные свойства, через которые я задаю параметры сообщения. Как можно инициализировать этот контрол на Page из дочерних контролов на Page?

    И как правильно управлять этим контролом, если я хочу инициализировать этот контрол вовремя Postback'а в неком дочернем контроле на Page?

    Спасибо.

    6 февраля 2011 г. 14:07

Ответы

  • Неправильно, с точки зрения архитектуры, создавать зависимости между элементами UserControl. Но если уж очень нужно, то воспользуйтесь вот таким решением доступа к одному элементу из другого (абстрактный пример):

    MyUserControl myUserControl = (MyUserControl)Page.FindControl("anotherUserControl");
    myUserControl.MyProperty = "some value";
    

    • Помечено в качестве ответа Makeev Vitaliy 6 февраля 2011 г. 19:04
    6 февраля 2011 г. 15:42
  • Немного уточню задачу, чтобы исключить возможное недопонимание: требуется установить свойства одного элемента UserControl (A) по событию из другого элемента UserControl (B). Для этого: объявляем в B собственное событие, подписываемся на него в классе страницы, содержащей оба элемента, в обработчике этого события изменяем свойства элемента A.
    • Помечено в качестве ответа Makeev Vitaliy 7 февраля 2011 г. 19:57
    6 февраля 2011 г. 19:59

Все ответы

  • Неправильно, с точки зрения архитектуры, создавать зависимости между элементами UserControl. Но если уж очень нужно, то воспользуйтесь вот таким решением доступа к одному элементу из другого (абстрактный пример):

    MyUserControl myUserControl = (MyUserControl)Page.FindControl("anotherUserControl");
    myUserControl.MyProperty = "some value";
    

    • Помечено в качестве ответа Makeev Vitaliy 6 февраля 2011 г. 19:04
    6 февраля 2011 г. 15:42
  • А если делать грамотнее, то нужно использовать событие или некую фабрику?
    6 февраля 2011 г. 19:04
  • Немного уточню задачу, чтобы исключить возможное недопонимание: требуется установить свойства одного элемента UserControl (A) по событию из другого элемента UserControl (B). Для этого: объявляем в B собственное событие, подписываемся на него в классе страницы, содержащей оба элемента, в обработчике этого события изменяем свойства элемента A.
    • Помечено в качестве ответа Makeev Vitaliy 7 февраля 2011 г. 19:57
    6 февраля 2011 г. 19:59
  • У меня ошибка при добавлении этого кода. Как её устранить?

    Ошибка    2    "System.Windows.Controls.Page" не содержит определение для "FindControl"    c:\ex\MainPage.xaml.cs

    21 апреля 2011 г. 20:19
  • Ошибка потому что вопрос касается asp.net, а не silverlight. Классы Page у них разные и в Silverlight версии нет метода FindControl. Можете попробовать следующие решения: Find control inside silverlight container controls, Find a control in a WPF/Silverlight Visual Tree by name


    Для связи [mail]
    22 апреля 2011 г. 6:37
    Модератор