Привязка элемента управления к элементу управления

#c# #silverlight

#c# #silverlight

Вопрос:

У меня есть страница, которая привязана к объекту с привязкой к данным, таким образом this.DataContext = anObject; , свойства этого объекта отлично связываются.

Но теперь у меня есть элемент управления внутри этого.

 <Control2></Control2>
  

И в конструкторе для этого элемента управления я установил this.DataContext = anotherObject;

Проблема, с которой я, похоже, сталкиваюсь, когда я это делаю, заключается в том, что этот элемент управления 2, похоже, имеет двойную привязку, когда я это делаю {Binding aProperty} , жалуется на то, что его нет, anotherObject и когда я привязываю {Binding anotherProperty} , он будет жаловаться на то, что его нет anObject

Есть идеи.

Комментарии:

1. Этот вопрос не так ясен. Итак, у вас есть объект в качестве DataContext элемента управления. Затем вы хотите установить объект. SomeProperty как DataContext вложенного элемента управления (Control2)?

2. когда я помещаю {Binding aProperty} это в xaml для отображения в текстовом блоке. контекст данных задается в коде.

3. пожалуйста, опубликуйте структуру xaml и структуру объекта и сообщите, что вы хотите

4. В этом вопросе не хватает ясности, требуется короткий пример кода Xaml и C #.

Ответ №1:

Я подозреваю, что контекст данных устанавливается страницей после того, как вы установили его в конструкторе. Таким образом, вы получаете два разных источника привязки, о которых сообщается в разное время.

Попробуйте прослушать событие DataContextChanged в вашем элементе управления.

Комментарии:

1. извините, я разрабатываю для WP7, он недоступен.

2. В отличие от WPF, элементы управления Silverlight не имеют события DataContextChanged. Вы можете добавить что-то подобное, используя такой подход, как codeproject.com/Articles/38559 / … , но это не то, что вы получаете «из коробки».