Сбой привязки данных для свойства коллекции пользовательского элемента управления - PullRequest
0 голосов
/ 28 апреля 2009

У меня есть пользовательский элемент управления - скажем, «ControlBase». У него есть свойство SomeItems, которое является ObservableCollection<InheritedFromDO>, где InheritedFromDO является классом, унаследованным от "DependencyObject".
Когда я создаю разметку для дочернего класса ControlBase, я хотел бы инициировать коллекцию SomeItems. Но почему-то я не могу использовать привязки в этой разметке, хотя элемент управления имеет довольно обычный DataContext и привязка работает в обычных случаях.

Это выглядит так:

<local:ControlBase
   ...
   >
   <local:ControlBase.SomeItems>
     <SomeItem
       DepPropertyOne={Binding Id} <!-- Does NOT work here -->
       />
     <SomeItem
       DepPropertyOne={Binding Name} <!-- Does NOT work here -->
       />
   <local:ControlBase.SomeItems>

   <Grid>
     <TextBlock
       Text={Binding Id} <!-- Works here -->
       />
   </Grid>
</local:ControlBase>

Выходные данные говорят:

System.Windows.Data Error: 2 : Cannot find governing FrameworkElement or FrameworkContentElement for target element. BindingExpression:Path=Id; DataItem=null; target element is 'SomeItem' (HashCode=26965808); target property is 'DepPropertyOne' (type 'Object')

Есть идеи, как заставить это работать?

1 Ответ

1 голос
/ 28 апреля 2009

Это потому, что элементы в коллекции не являются частью логического дерева. Вам нужно настроить логических потомков вашего элемента управления, если вы хотите, чтобы это работало, или создать подкласс для элемента управления, который делает это за вас (например, ItemsControl).

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