2009-05-04 4 views
2

Опасайтесь, это довольно простой вопрос (я думаю).Доступ к DataContext в кодировке

У меня есть UserControl, называемый MyUserControl. Я использую его в DataTemplate для моего ListBox:

<l:MyUserControl DataContext="Test" /> 

Теперь я хочу, чтобы получить доступ к этой DataContext в коде-позади MyUserControl, и я ожидаю, DataContext содержат строковый объект с содержимым «Test». Однако DataContext имеет значение null. Что мне здесь не хватает?

ответ

1

Если вы хотите получить доступ к свойству DataContext в коде позади, дают пользователю контроль (или какие-либо элементы управления для этого вопроса) имя:

в коде позади:

myControl.DataContext = некоторый объект;

Хотя в вашем примере установка DataContext в «Test» ничего не выполнит.

Читайте на связывание данных в WPF http://msdn.microsoft.com/en-us/library/aa480224.aspx

+0

Если не будет ли другой путь? Что-то вроде: var theDataContext = (SomeViewModelType) myControl.DataContext; Или как минимум: var theDataContext = myControl.DataContext; Оператор op не хочет устанавливать контекст данных, но для доступа к нему. – Jelgab

0

Вам нужно поле или собственность в классе MyUserControl с именем DataContext.

См. here, чтобы узнать о свойствах пользовательского управления в .net.

+0

UserControl уже есть свойство DataContext, так что мой наследуется класс также будет иметь это свойство .. –

Смежные вопросы