Я пытаюсь получить доступ к модели представления представления в коде с использованием свойства DataContext
. Однако независимо от того, в какой точке жизненного цикла представления я пытаюсь получить к нему доступ, свойство всегда равно null
.DataContext просмотра всегда null
Простая установка манекена:
// shell
internal class ShellViewModel : Conductor<IScreen>.Collection.OneActive
{
public ShellViewModel() {
ActivateItem(new MyTestViewModel());
}
}
// view code-behind
public partial class MyTestView : UserControl {
public MyTestView() {
InitializeComponent();
}
protected override void OnInitialized(EventArgs args) {
var vm = DataContext as MyTestViewModel;
Debug.Assert(vm != null); // is always null!
}
}
Вид прибудете в корректной инициализации модель представления вызывается, и оба могут быть связаны друг с другом. Когда я привязываю свойство модели представления к элементу управления представлением, к нему можно получить доступ без проблем. Только во время инициализации DataContext
вида всегда null
. Что?
MVVM рамка: Caliburn.Micro
Вы можете попробовать где-то после инициализации, может быть в событии Loaded пользовательского элемента управления? – Joseph
Проверьте, является ли 'DataContext' пустым первым, потому что вы можете отличить' DataContext' от неправильного типа. – Oluwafemi
Где и как вы устанавливаете свой datacontext для представления? –