Xamarin.Forms SystemFontOfSize缺少一些重载

本文关键字:重载 Forms SystemFontOfSize Xamarin | 更新日期: 2023-09-27 18:29:43

根据Xamarin.Forms文档,我应该能够使用Font.SystemFontOfSize([size], [FontAttributes])方法设置字体属性。但是,当我创建一个新的Blank App(Xamarin.Forms Portable)项目并将以下代码添加到Portable项目中的App.cs时,由于某种原因,我无法访问Font.SystemFontOfSize(...)的所有重载,也无法访问Xamarin.Forms.FontAttributes枚举。

// FontExample/App.cs
using System;
using Xamarin.Forms;
namespace FontExample {
    public class App {
        public static Page GetMainPage() {
            return new ContentPage {
                Content = new Label {
                    Text = "Hello, Forms !",
                    Font = Font.SystemFontOfSize(14, FontAttributes.Italic)
                },
            };
        }
    }
}

SystemFontOfSize似乎只有两个重载,编译器给了我:

名称"FontAttributes"在当前上下文中不存在[…]

这个项目似乎已经有了所有的默认引用(.NET、Xamarin.Forms.Core、Xamarin.Forms.Xaml),我没有碰它们。

但是,如果我下载一个具有完全相同设置的示例项目(从具有相同引用的可移植项目中调用Font.SystemFontOfSize),则该项目编译良好,并且我似乎可以访问所有Font.SystemFontOfSize重载以及Xamarin.Forms.FontAttributes枚举。

当我自己创建一个新项目时,为什么不能访问所有Xamarin.Forms API功能?我找不到新创建的Blank应用程序(Xamarin.Forms Portable)和上面链接的示例项目之间有任何显著差异。

Xamarin.Forms SystemFontOfSize缺少一些重载

听起来您的构建有些混乱。

尝试通过NuGet删除Xamarin.Forms引用;关闭项目并重新开放;通过NuGet重新添加Xamarin.Forms。当前的最新版本应该是v1.23x.

如果以上方法不起作用,请尝试进行干净的生成(在Visual Studio中,"生成"->"干净的解决方案"),然后尝试重新生成。

作为最后的手段,进入每个应用程序文件夹,删除"obj"answers"bin"目录并重新生成。

以上其中一项应该可以解决您的问题。

请注意,在Xamarin.Forms的早期版本中,使用Font.SystemFontOfSize({fontsize}, {font-attributes-enum})存在问题,这将导致此过载使应用程序崩溃并出现异常

除非他们现在已经纠正了这一点,否则你需要使用Font.SystemFontOfSize(30).WithAttributes(FontAttributes.Bold)之类的东西来解决这个问题。