2017-05-20 6 views

答えて

2

これを行う正しい方法はありません。クロスプラットフォームの「デフォルトフォントファミリ」がここにプルアップされているわけではなく、プラットフォーム固有であるという事実もあります。 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を参照してください。

関連する問題