Рассмотрим файл | Новый проект приложения WPF, который содержит:
Возьмите сгенерированный стиль из Generic.xaml и переместите его в Dictionary2. Затем объедините Dictionary2 с Dictionary1 и Dictionary1 с Generic следующим образом:
<!--Generic.xaml-->
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/Themes/Dictionary1.xaml"/>
</ResourceDictionary.MergedDictionaries>
<!--Dictionary1.xaml-->
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Dictionary2.xaml"/>
</ResourceDictionary.MergedDictionaries>
Затем добавьте экземпляр CustomControl1 в сетку MainWindow. (Эта часть необходима для воспроизведения проблемы. Проект всегда компилируется нормально - проблема проявляется только во время выполнения, и на словари должны быть ссылки.)
В Dictionary1.xaml я сливаю другой dict в той же папке , поэтому работает простой Source = "Dictionary2.xaml". Однако в Generic.xaml я должен использовать абсолютный URI. Если я изменю приведенное выше значение на Source = "Dictionary1.xaml" без материала приложения pack: //, тогда я получу исключение XamlParseException, вызванное IOException «Не удается найти ресурс« dictionary1.xaml »», когда он пытается создать MainWindow.
Мой вопрос: Что особенного в generic.xaml относительно относительного разрешения URI и почему?