C# Xamarin:是否可以在App.cs文件中包含我的字体资源?

C# Xamarin:是否可以在App.cs文件中包含我的字体资源?,c#,wpf,xamarin,xamarin.forms,resourcedictionary,C#,Wpf,Xamarin,Xamarin.forms,Resourcedictionary,嗨,我当前的xamarin应用程序没有全局app.xaml文件,只有app.cs,这是我配置它的方式,我希望保持这种方式 现在谈到这个问题,我想使用fontawsome中的一些字体图标,但为了实现这一点,我需要在xaml文件中定义一个resourcedictionary。现在我正在将资源复制粘贴到每个需要图标的xaml页面 我希望这些资源能够在全局范围内工作,因此有没有办法将我的代码转换为C#或在我的global App.xaml文件中实现这些资源,这样我就不必一直复制/粘贴它们 以下是我用于我

嗨,我当前的xamarin应用程序没有全局app.xaml文件,只有app.cs,这是我配置它的方式,我希望保持这种方式

现在谈到这个问题,我想使用fontawsome中的一些字体图标,但为了实现这一点,我需要在xaml文件中定义一个resourcedictionary。现在我正在将资源复制粘贴到每个需要图标的xaml页面

我希望这些资源能够在全局范围内工作,因此有没有办法将我的代码转换为C#或在我的global App.xaml文件中实现这些资源,这样我就不必一直复制/粘贴它们

以下是我用于我的资源的代码:

        <ResourceDictionary>
            <OnPlatform x:TypeArguments="x:String" 
                x:Key="FontAwesomeBrands">
                <On Platform="Android" 
          Value="FontAwesome5Brands.otf#Regular" />
                <On Platform="iOS" 
          Value="FontAwesome5Brands-Regular" />
                <On Platform="UWP" 
          Value="/Assets/FontAwesome5Brands.otf#Font Awesome 5 Brands" />
            </OnPlatform>

            <OnPlatform x:TypeArguments="x:String" 
                x:Key="FontAwesomeSolid">
                <On Platform="Android" 
          Value="FontAwesome5Solid.otf#Regular" />
                <On Platform="iOS" 
          Value="FontAwesome5Free-Solid" />
                <On Platform="UWP" 
          Value="/Assets/FontAwesome5Solid.otf#Font Awesome 5 Free" />
            </OnPlatform>

            <OnPlatform x:TypeArguments="x:String" 
                x:Key="FontAwesomeRegular">
                <On Platform="Android" 
          Value="FontAwesome5Regular.otf#Regular" />
                <On Platform="iOS" 
          Value="FontAwesome5Free-Regular" />
                <On Platform="UWP" 
          Value="/Assets/FontAwesome5Regular.otf#Font Awesome 5 Free" />
            </OnPlatform>
        </ResourceDictionary>

Xamarin更新了您引用字体的方式,比以前容易多了

现在,您所要做的就是:

  • 在程序集中添加字体,该程序集由iOS和Android projet作为参考添加
  • 将生成操作(文件属性)设置为Embedded resource
  • 更新已添加字体的程序集的AssemblyInfo
  • 在FontFamily中设置字体的别名
  • 你可以使用这些字体

编辑: 如果您无法升级到最新的XF,以下是步骤(请抓紧,它更复杂):

  • iOS:
    • 在iOS项目的“资源”文件夹下,将字体添加为BundleResource

    • 使用此代码编辑您的Info.plist

       <!-- Custom fonts -->
       <key>UIAppFonts</key>
       <array>
           <string>Fonts/FontAwesome-Regular.otf</string>
           <string>Fonts/FontAwesome-Solid.otf</string>
           <string>Fonts/FontAwesome-Light.otf</string>
       </array>
      
      
      UIAppFonts
      

      /!\也许它与字体名称中的空白一起工作。我不知道为什么它不适合我的空间。因此,可能不需要删除字体名称中的空格

      您可以在Xamarin Forms App.xaml部分的代码隐藏中执行相同的操作


      希望它能帮助你

      Xamarin已经更新了你参考字体的方式,而且比以前容易多了

      现在,您所要做的就是:

      • 在程序集中添加字体,该程序集由iOS和Android projet作为参考添加
      • 将生成操作(文件属性)设置为Embedded resource
      • 更新已添加字体的程序集的AssemblyInfo
      • 在FontFamily中设置字体的别名
      • 你可以使用这些字体

      编辑: 如果您无法升级到最新的XF,以下是步骤(请抓紧,它更复杂):

    • iOS:
      • 在iOS项目的“资源”文件夹下,将字体添加为BundleResource

      • 使用此代码编辑您的Info.plist

         <!-- Custom fonts -->
         <key>UIAppFonts</key>
         <array>
             <string>Fonts/FontAwesome-Regular.otf</string>
             <string>Fonts/FontAwesome-Solid.otf</string>
             <string>Fonts/FontAwesome-Light.otf</string>
         </array>
        
        
        UIAppFonts
        

        /!\也许它与字体名称中的空白一起工作。我不知道为什么它不适合我的空间。因此,可能不需要删除字体名称中的空格

        您可以在Xamarin Forms App.xaml部分的代码隐藏中执行相同的操作


        希望它能对你有所帮助

        到目前为止你尝试过什么吗?是的,谷歌搜索没有结果我尝试过将代码转换为c#但根本不起作用你尝试过什么吗?是的,谷歌搜索没有结果我尝试过将代码转换为c#但根本不起作用。我的xamarin表单是在一个旧版本上,我想这适用于4.6?我无法更新(尝试了),然后整个应用程序不再工作。我在找一个方法在4.4上做你知道吗?否则你的答案会很完美是的我会编辑我的answer@ernie你的意思是Nk54的回复在Xamarin.forms 4.4上不起作用,我在Xamarin.forms 4.1上测试,它也可以。@ernie你让它起作用了吗?@Nk54抱歉我离开了一会儿,我现在就去看看我的Xamarin表单是在旧版本上的,我想这适用于4.6?我无法更新(尝试了),然后整个应用程序不再工作。我在找一个方法在4.4上做你知道吗?否则你的答案会很完美是的我会编辑我的answer@ernie你的意思是Nk54的回复在Xamarin.forms 4.4上不起作用,我在Xamarin.forms 4.1进行测试,它也很好。@ernie你让它起作用了吗?@Nk54抱歉我离开了一会儿,我现在就去看看