Iam尝试使用app.xaml中的样式为整个xamarin表单应用设置自定义字体。但我得到了未处理的异常。
<Label Style="{StaticResource labelFont}"></Label>
在我的内容页面中使用样式如下
result = dt$Value[dt$Date %in% dates]
# [1] 2 3
对此有何解决方案?
答案 0 :(得分:0)
如果要使用字体文件为所有标签设置字体,则需要创建自定义渲染器。在那里,像这样重写OnElementChanged:
protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
{
base.OnElementChanged(e);
try
{
Typeface font = Typeface.CreateFromAsset(Forms.Context.Assets, path);
Control.Typeface = font;
}
catch(Exception ex)
{
System.Diagnostics.Debug.WriteLine("Unable to make typeface:" + ex);
}
}
但是,如果你想为每个标签设置一个自定义字体,你需要创建一个自定义标签类(在pcl中)继承自Label并添加一个字体属性(准确地说 - 你的属性) '用于传递字体文件的路径。)
public static readonly BindableProperty CustomFontProperty =
BindableProperty.Create(
"CustomFont",
typeof(string),
typeof(CustomLabel),
default(string));
public string CustomFont
{
get { return (string)GetValue(CustomFontProperty); }
set { SetValue(CustomFontProperty, value); }
}
然后在您的渲染器中,您可以像这样阅读此属性:
var label = Element as CustomLabel;
string path = label.CustomFont;
请注意Android中的路径使用'/'作为分隔符,而不是'。'就像在表格中一样