我创建了一个使用Label
字体样式的UIFontTextStyle.Body
渲染器。
public class LabelBodyCustomRenderer : LabelRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
{
base.OnElementChanged(e);
if (Control != null)
Control.Font = UIFont.GetPreferredFontForTextStyle(UIFontTextStyle.Body);
}
}
然后我在XAML
中使用它,如下所示:
<local:LabelBodyRendererClass x:Name="numberAnswerLabel" />
并填充Label
中的C#
文字:
numberAnswerLabel.Text = App.noa.Text() + " correct";
这样做,UIFontTextStyle.Body
不会应用于标签,但如果我在Label
一侧填充XAML
的文字,如:
<local:LabelBodyRendererClass Text="sample text" />
然后应用字体样式。
任何人都知道为什么它会像这样工作?以及如何修复它以便使用样式?
答案 0 :(得分:3)
由于某种原因,只要字体的文本或任何相关属性发生变化,就会重置字体。
因此您必须处理TextChanged
事件,然后重新应用字体。在FormsCommunityToolkit中查看我的代码。
每当其中一个属性发生变化时,我再次应用新字体:
if (e.PropertyName == Label.TextColorProperty.PropertyName
|| e.PropertyName == Label.FontProperty.PropertyName
|| e.PropertyName == Label.TextProperty.PropertyName
|| e.PropertyName == Label.FormattedTextProperty.PropertyName)
{
control.Font = UIFont.FromName (_effect.FontFamilyName, control.Font.PointSize);
}
它与“虫子”有关。报告here。