Considere un archivo | Nuevo proyecto de una aplicación de WPF que contiene:¿Por qué son necesarios los uri absolutos para los diccionarios fusionados en Generic.xaml?
- Un nuevo control personalizado denominado CustomControl1
- Dos nuevos diccionarios de recursos nombrados Dictionary1 y Dictionary2
Tome el estilo generada fuera del Generic.xaml y moverlo a Dictionary2. Luego fusionar Dictionary2 en Dictionary1 y Dictionary1 en genérico como esto:
<!--Generic.xaml-->
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/Themes/Dictionary1.xaml"/>
</ResourceDictionary.MergedDictionaries>
<!--Dictionary1.xaml-->
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Dictionary2.xaml"/>
</ResourceDictionary.MergedDictionaries>
a continuación, añadir una instancia de CustomControl1 en la parrilla de MainWindow. (Esta parte es necesaria para reproducir el problema. El proyecto siempre compila bien, solo en tiempo de ejecución aparece el problema y se debe hacer referencia a los diccionarios)
En Dictionary1.xaml me estoy fusionando en otra dicción del mismo carpeta, por lo que funciona una simple Fuente = "Diccionario2.xaml". Sin embargo, en Generic.xaml debo usar un URI absoluto. Si cambio lo anterior para que sea Source = "Dictionary1.xaml" sin el paquete: // cosas de la aplicación, entonces obtengo una XamlParseException causada por una IOException "No se puede localizar el recurso 'dictionary1.xaml'" cuando intenta construir MainWindow.
Mi pregunta:¿Qué tiene especial sobre generic.xaml con respecto a la resolución relativa de URI, y por qué?