Ответ 1
Ответил аналогичный вопрос здесь. Вопрос не совсем то же, что один из них содержит слитые словари, которые пропускаются, но это, скорее всего, та же ошибка.
Это ошибка оптимизации, см. эту ссылку.
О создании каждого объекта в XAML, если присутствует стиль по умолчанию (т.е. стиль с ключом типа), который стиль должен применяться. Как вы можете представьте, что есть несколько характеристик оптимизация, чтобы сделать это (подразумеваемое) найдите легкий вес, насколько это возможно. Один из них заключается в том, что мы не заглядываем внутрь Словари ресурсов, если они не являются помечено как "содержащий значение по умолчанию Стили". Есть ошибка: если все ваши стили по умолчанию вложены в объединенные словарей на трех уровнях (или глубже), верхний словарь не получите флаг, чтобы поиск пропускал его. Работа вокруг заключается в том, чтобы по умолчанию Стиль к чему-то, что угодно, в корневой словарь.
Я вижу, что вы уже нашли обходной путь, просто добавьте стиль фиктивного стиля в App.xaml. Он не должен иметь никаких сеттеров и т.д., Что-то вроде этого тоже будет делать
<Application.Resources>
<DataTemplate DataType="{x:Type vm:someviewmodeltype}">
<vw:somevwcontrol />
</DataTemplate>
<Style TargetType="{x:Type Rectangle}" />
</Application.Resources>