Rozważ plik | Nowy projekt aplikacji WPF, który zawiera:Dlaczego bezwzględne nazwy URI są wymagane w przypadku łączonych słowników w pliku Generic.xaml?
- nowy zwyczaj kontrola nazwie CustomControl1
- Dwa nowe słowniki zasobów nazwanych Dictionary1 i Dictionary2
Take wygenerowany styl z Generic.xaml i przenieść go do Dictionary2. Następnie połączyć Dictionary2 do Dictionary1 i Dictionary1 do Generic tak:
<!--Generic.xaml-->
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/Themes/Dictionary1.xaml"/>
</ResourceDictionary.MergedDictionaries>
<!--Dictionary1.xaml-->
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Dictionary2.xaml"/>
</ResourceDictionary.MergedDictionaries>
Następnie dodać instancję CustomControl1 do siatki MainWindow użytkownika. (Ta część jest niezbędna do odtworzenia problemu.Projekt zawsze kompiluje dobrze - tylko w czasie uruchamiania pojawia się problem, a słowniki muszą się odnosić.)
W Dictionary1.xaml Łączę się w innym dict w tym samym folder, więc działa proste źródło = "Dictionary2.xaml". Jednak w Generic.xaml muszę używać bezwzględnego URI. Jeśli zmienię powyższe na Source = "Dictionary1.xaml" bez pakietu: // stuff aplikacji, otrzymam wyjątek XamlParseException spowodowany przez wyjątek IOException "Can not locate resource" dictionary1.xaml '"podczas próby utworzenia MainWindow.
Moje pytanie:Co jest wyjątkowego w przypadku pliku generic.xaml dotyczącego względnej rozdzielczości URI i dlaczego?