Рассмотрим файл | Новый проект приложения WPF, содержащий:
- Новый настраиваемый элемент управления с именем CustomControl1
- Два новых ресурсных словаря с именем Dictionary1 и Dictionary2
Возьмите созданный стиль из 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" без пакета://application stuff, тогда я получаю исключение XamlParseException, вызванное IOException "Невозможно найти ресурс" dictionary1.xaml ", когда он пытается построить MainWindow.
Мой вопрос: Что общего в generic.xaml относительно относительного разрешения URI и почему?