2012-03-28 3 views
0

У меня есть viewmodel с наблюдаемым элементом коллекции.Datacontext usercontrol is null

Я создал пользовательское управление, которое связывается с этой коллекцией, и для каждый элемент в коллекции. Я заканчиваю конструктор элементов управления пользователя. В этом конструкторе datacontext имеет значение null, почему?

<ItemsControl ItemsSource="{Binding ListOfMyCustomType}"> 
<ItemsControl.ItemTemplate> 
    <DataTemplate> 
     <uc:Tile DataContext="{Binding Path=.}"></uc:Tile> 
    </DataTemplate> 
</ItemsControl.ItemTemplate> 
<ItemsControl.ItemsPanel> 
    <ItemsPanelTemplate> 
     <WrapPanel /> 
    </ItemsPanelTemplate> 
</ItemsControl.ItemsPanel> 

Edit:
Там нет ошибок BindingExpression в выводе отладки.

Edit:
решаемые Matthias, то DataContext не доступен в этот раз. Он будет доступен, когда элемент управления будет загружен или когда будет изменен datacontext. Пальцы вверх!

Привет,

Мишель

+0

Я предполагаю, что я даже могу удалить _binding путь = ._, так как управление будет использовать DataContext по умолчанию, то есть ток элемент в коллекции. –

+1

Ваш xaml выглядит хорошо. Я могу представить, что DataContext не задан при выполнении конструктора. Попробуйте подключиться к событию UserControl.Loaded и использовать там DataContext. – MatthiasG

+1

Еще лучше: используйте событие DataContextChanged. – MatthiasG

ответ

1

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

Затем в загруженном случае вашего контроля, вы должны быть в состоянии получить доступ к его DataContext:

var dataContext = this.DataContext as YourCustomType; 
Смежные вопросы