Xaml не может найти привязку - PullRequest
1 голос
/ 20 мая 2011

У меня есть страница с тремя дочерними элементами управления пользователя. Я установил ресурс модели представления DataContext на родительской странице, и три дочерних элемента управления ссылаются на родительский элемент DataContext, поскольку все 3 дочерних элемента управления используют один и тот же ViewModel. Все хорошо.

Однако у одного из UserControls есть проблемы с привязкой (я вижу это из-за новой функции отладки XAML в Silverlight 5 Beta.) Рассматриваемый UserControl - это ItemsControl. Внутри каждого элемента есть кнопка и 2 текстовых поля. Эта кнопка связана с Командой. Ошибка в том, что кнопка не может найти свою привязку. 2 текстовых поля являются обязательными. ItemSource элемента ItemsControl привязан к ObservableCollection в модели представления.

Мой вопрос заключается в следующем: как я могу сказать кнопке искать ее привязку «на более высоком уровне», чем наблюдаемая коллекция, т. Е. Перейти к модели представления, а не к вашему непосредственному родителю (наблюдаемая коллекция). Вы не можете установить DataContext для кнопки в ChildControl, потому что там нет ссылки на модель вида. Это в родителе.

Ответы [ 3 ]

1 голос
/ 21 мая 2011

Попробуйте это: -

Дайте вашему ItemsControl имя. В привязку вашей кнопки включите ElementName=NameOfItemsControl, префикс пути привязки с DataContext..

0 голосов
/ 02 июля 2011

С тех пор я переместил все свои проекты SL5 обратно в SL4.Новая функция отладки XAML в SL5 работала не более нескольких дней и в настоящее время наносит урон ошибками из-за невозможности найти PDB.Я бы посоветовал всем, кто разрабатывает большие проекты, держаться подальше от SL5 до тех пор, пока он не будет проверен и доказан, иначе вы в конечном итоге потратите огромное количество времени на попытки проанализировать причудливые ошибки, которые выдает SL5.

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

Вы должны иметь возможность использовать привязку RelativeSource, чтобы перейти к вашей модели представления

{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ItemsControl}}, 
         Path=DataContext.MyButtonCommand}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...