Tengo una aplicación que utiliza un conjunto de biblioteca separado para los recursos (pero no un ensamblado de solo recursos sin código), y me gustaría incluir una fuente personalizada en la biblioteca.En WPF, ¿cómo hago referencia a una fuente en una biblioteca de recursos en el código?
Puedo obtener la fuente, que es Open Type Font
, para cargar si agrego su archivo .otf como un recurso para el proyecto para el ensamblaje en ejecución (en lugar del proyecto de la biblioteca de recursos), con las propiedades establecidas como construir Acción = 'recurso' y copiar a la salida = 'no copiar', utilizando el siguiente código:
FontFamily font = new FontFamily(new Uri("pack://application:,,,/"),
"./Resources/#CustomFont")); // Resources is a subfolder
Cuando intento agregar la fuente al proyecto biblioteca de recursos, sin embargo, la fuente no se carga . He intentado utilizar el siguiente código para cargarlo (también de la nota: no tengo mucha experiencia con los URI del paquete):
FontFamily font = new FontFamily(new Uri("pack://application:,,,/MyLibrary"),
"./Resources/#CustomFont"));
// there is a Resources subfolder in my library as well
// not sure about whether I need the .
La biblioteca funciona para otros recursos, como imágenes.
También he intentado un montón de otras permutaciones para el URI sin éxito (tampoco arroja excepciones, solo muestra con la fuente predeterminada, no estoy seguro de si se trata de un problema diferente).
He estado trabajando desde Packaging Fonts with Applications en MSDN, que tiene un ejemplo de creación de una biblioteca de recursos de fuentes, pero no hay ejemplos usando código detrás (me veo obligado a usar código para esto).
¿Alguna idea sobre lo que debo hacer? ¿Estoy fuera de la pista?
esto no funcionó para mí, lo que sugiere que tengo alguna otra problema ya que está funcionando para usted. – Pysul
Gracias, para mí funcionó ... ¡me salvó un montón de prueba y error! – yvesonline
¡Puedo confirmar que funciona perfectamente y antes de probar demasiadas combinaciones de carga sin éxito! Pensé que un acceso relativo a los recursos desde dentro de dll sería suficiente, pero aparentemente se requiere agregar el nombre del ensamblado, ¡incluso si se debe acceder a las fuentes desde el mismo ensamblado! – too