2012-03-14 3 views
4

J'utilise le msdn tutorial pour ajouter un FontFamily dans mon application WPF, en .csproj je:famille de polices dans ResourceDictionary

<ItemGroup> 
    <Resource Include="Resources\MetaOT-Norm.otf" /> 
    <Resource Include="Resources\MetaOT-Bold.otf" /> 
    </ItemGroup> 

J'ai ajouté le fontfamily dans le ResourceDictionary, comme ça:

<FontFamily x:Key="FontMetaOT">./Resources/#Meta OT</FontFamily> 

Mais ce n'est pas appliqué ... (J'ai essayé avec les fichiers de polices dans le répertoire des polices de Windows et ça marche bien). Une idée ?

+0

est-il un problème avec les polices OpenType? –

+0

@ahmet que voulez-vous dire? Effectivement, je n'ai pas trouvé d'exemple en utilisant l'extension .otf, la plupart d'entre eux utilisent une extension .ttf ... Pensez-vous que je peux utiliser l'extension .otf avec ce code? – rad

+0

Silverlight prend en charge OTF. Avez-vous essayé une référence directe? Comme ceci: http://blogs.silverlight.net/blogs/msnow/archive/2008/09/25/silverlight-tip-of-the-day-46-font-support-in-silverlight.aspx – Jeremiah

Répondre

2

Si vous utilisez un fichier de dictionnaire de ressources, vous devez adresser les fichiers à l'aide du Pack URI Scheme. Par exemple:

L'exemple suivant montre l'URI paquet pour un fichier de ressources XAML se trouve à la racine du dossier de projet de l'ensemble référencé.

pack://application:,,,/ReferencedAssembly;component/ResourceFile.xaml 

L'exemple suivant montre l'URI paquet pour un fichier de ressources XAML est situé dans un sous-dossier du dossier de projet de l'ensemble référencé.

pack://application:,,,/ReferencedAssembly;component/Subfolder/ResourceFile.xaml 

L'exemple suivant montre l'URI paquet pour un fichier de ressources XAML se trouve dans le dossier racine d'un référencé, un dossier spécifique à la version projet de montage .

pack://application:,,,/ReferencedAssembly;v1.0.0.1;component/ResourceFile.xaml 

Si le fichier se trouve dans le dossier de sortie, vous pouvez utiliser le site d'origine pour s'y référer:

L'exemple suivant montre l'URI pack pour un site XAML d'origine fichier, stocké à l'emplacement à partir duquel l'assembly exécutable est lancé.

pack://siteoforigin:,,,/SiteOfOriginFile.xaml 

L'exemple suivant montre l'URI paquet pour un site de XAML de fichier origine, stockés dans un sous-dossier qui est relatif à l'emplacement à partir duquel ensemble exécutable de l'application est lancée.

pack://siteoforigin:,,,/Subfolder/SiteOfOriginFile.xaml 

À titre d'exemple:

<UserControl.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <!--A resource dictionary in the output folder in the Assets folder--> 
      <ResourceDictionary Source="pack://siteoforigin:,,,/Assets/OpenIconsDictionary.xaml"/> 
      <!--A resource dictionary packed in the Gui dll--> 
      <ResourceDictionary Source="pack://application:,,,/Gui;component/Assets/PackedIconsDictionary.xaml"/> 
     </ResourceDictionary.MergedDictionaries> 
     </ResourceDictionary> 
</UserControl.Resources> 



<!--In the output folder /Assets/OpenIconsDictionary.xaml (Build Action: Embedded Resource, Copy always)--> 
<ResourceDictionary 
       xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
       xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 

    <BitmapImage x:Key="Icon"     
       UriSource="pack://siteoforigin:,,,/Images/image.png"/> 


</ResourceDictionary> 


<!--In Gui.dll in the folder /Assets/PackedIconsDictionary.xaml (Build Action: Page, Do not copy)--> 
<ResourceDictionary 
       xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
       xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 

    <BitmapImage x:Key="Icon"     
       UriSource="pack://siteoforigin:,,,/Images/image.png"/> 


</ResourceDictionary> 
+1

mais où dois-je utiliser ceci, à l'intérieur de FontFamily Tag ou dans Resource, serait bien de voir un exemple complet. – CularBytes

Questions connexes