2015-04-08 5 views
0

У меня есть UserControl (Карта), который содержит элемент Canvas. Я динамически добавляю элемент управления (Gate) к этому холсту из кода позади.Настройка Datacontext динамически созданного элемента управления

Я хочу, чтобы объекты Gate DataContext были свойством «Gate» для DataContext карты. Это делается в коде позади.

Binding dataContextBinding = new Binding(); 
     dataContextBinding.RelativeSource = new RelativeSource(RelativeSourceMode.Self); 
     dataContextBinding.Path = new PropertyPath("DataContext.SelectedLevelModule.Gate"); 
     dataContextBinding.Mode = BindingMode.TwoWay; 
     dataContextBinding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged; 
     BindingOperations.SetBinding(gate, DataContextProperty, dataContextBinding); 

После этого блок кода выполняется, то gate.DateContext есть нулевые ... Любые способы как это можно сделать? Чертеж пустой. Спасибо Harold

ответ

0

Вы устанавливаете путь собственности к DataContext.SelectedLevelModule.Gate. Затем вы назначаете привязку к DataContextProperty. Я думаю, что происходит то, что путь теперь gate.DataContext.DataContext.SelectedLevelModule.Gate.

Попробуйте удалить DataContext с PropertyPath и посмотреть, исправляет ли он это. Вы уже назначили его DataContext, вам не нужно указывать его в Пути.

var dataContextBinding = new Binding(); 
dataContextBinding.Path = new PropertyPath("SelectedLevelModule.Gate"); 
BindingOperations.SetBinding(gate, DataContextProperty, dataContextBinding);