Это кажется таким глупым, но я искал пару часов, и ничего, что я нашел, не решает эту проблему.
Я использую MvvmLight. У меня есть простое MainWindow, в котором нет ничего, кроме сетки. У меня есть другой класс, который является WPF UserControl, который содержит одну кнопку. Оба из них имеют
DataContext="{Binding Main, Source={StaticResource Locator}}"
в их определении узла (либо Window, либо UserControl). App.xaml имеет стандартную запись в своих ресурсах:
<vm:ViewModelLocator x:Key="Locator" d:IsDataSource="True" />
Я играю с сообщениями, и у меня есть сообщение о загрузке этого UserControl в MainWindow. Я могу проследить, и все работает просто замечательно - вплоть до того момента, когда он создает экземпляр нового UserControl, а код позади выполняет свой InitializeComponent ().
На этом этапе приложение останавливается в файле .xaml пользовательского элемента управления с XamlParseException, жалуясь, что не может найти «Локатор» (и, да, я знаю, имена ресурсов чувствительны к регистру, спасибо).
Это абсолютно бессмысленно для меня. В режиме конструктора в пользовательском элементе управления я могу перейти к нужному контексту данных - он видит Locator, а Locator видит Main, а Main видит свойство, которое я привязываю к кнопке. И дизайнер ПОКАЗЫВАЕТ текст на кнопке.
Любой ???
Это C # в VS 2010 Ultimate, v10.0.30319.1, работающей в Windows 7.