#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 / … , но это не то, что вы получаете «из коробки».