これはnull
を返します。デフォルトのフォントファミリは何ですか?
DefaultFontFamily = Font.SystemFontOfSize(NamedSize.Default).FontFamily;
だけでなく、この:
DefaultFontFamily = new Label().FontFamily;
それを行うための正しい方法は何ですか?
これはnull
を返します。デフォルトのフォントファミリは何ですか?
DefaultFontFamily = Font.SystemFontOfSize(NamedSize.Default).FontFamily;
だけでなく、この:
DefaultFontFamily = new Label().FontFamily;
それを行うための正しい方法は何ですか?
これを行う正しい方法はありません。クロスプラットフォームの「デフォルトフォントファミリ」がここにプルアップされているわけではなく、プラットフォーム固有であるという事実もあります。 Label
のソースコードで定義されるよう
FontElement
で定義されるように順番に依存する性質をいう
public static readonly BindableProperty FontFamilyProperty = FontElement.FontFamilyProperty;
、
public static readonly BindableProperty FontFamilyProperty =
BindableProperty.Create("FontFamily", typeof(string), typeof(IFontElement), default(string),
propertyChanged: OnFontFamilyChanged);
または参照した静的メソッドSystemFontOfSize
。
public static Font SystemFontOfSize(NamedSize size)
{
var result = new Font { NamedSize = size };
return result;
}
あなたが見ることができるように、両方のケースでは、ソースコードごとに、FontFamily
の値'null'
は予想外ではありません。 (最初のケースでは、依存関係プロパティはnullに変換default(string)
としてデフォルト値で定義され、第2の場合に、FontFamily
の値が設定されることはありません)同
はFont.Default
ために行きます。さらに掘削では、次のように定義されてIsDefault
に遭遇:null
ある
public bool IsDefault
{
get { return FontFamily == null && FontSize == 0 && NamedSize == NamedSize.Default && FontAttributes == FontAttributes.None; }
}
のでFontFamily
場合、それはxamarinフォームのエコシステムのデフォルトです。 Label
は、特定のプラットフォーム上でレンダリングさんと、そのFontFamily
プロパティは、具体的'null'
からいくつかの値に変更されない限り
、その後、ネイティブコントロールのフォントプロパティは、どちらかに変更されることはありません。したがって、ネイティブコントロールは、そのプラットフォーム用のデフォルトフォントファミリでレンダリングされます。
デフォルトのフォントを取得するには、その値を取得するためにはimplement native-services, and use dependency-injectionにする必要があります。
Label
に使用されるネイティブコントロールの詳細については、linkを参照してください。