C# 为什么我的“标签”渲染器字体样式未应用于标签';Xamarin格式的文本?
我创建了一个使用C# 为什么我的“标签”渲染器字体样式未应用于标签';Xamarin格式的文本?,c#,xaml,xamarin.ios,xamarin.forms,C#,Xaml,Xamarin.ios,Xamarin.forms,我创建了一个使用uifontextstyle.Body字体样式的标签渲染器 public class LabelBodyCustomRenderer : LabelRenderer { protected override void OnElementChanged(ElementChangedEventArgs<Label> e) { base.OnElementChanged(e); if (Control != null)
uifontextstyle.Body
字体样式的标签
渲染器
public class LabelBodyCustomRenderer : LabelRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
{
base.OnElementChanged(e);
if (Control != null)
Control.Font = UIFont.GetPreferredFontForTextStyle(UIFontTextStyle.Body);
}
}
公共类LabelBodyCustomRenderer:LabelRenderer
{
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
if(控件!=null)
Control.Font=UIFont.GetPreferredFontForTextStyle(UIFontTextStyle.Body);
}
}
然后我在XAML
中使用它,如下所示:
并在C#
中填充标签的文本:
numberTranswerLabel.Text=App.noa.Text()+“正确”代码>
这样做时,uifontextstyle.Body
不会应用于标签,但如果我在XAML
侧填充标签的文本,则如下所示:
然后应用字体样式
有人知道为什么会这样吗?以及如何修复它以使用样式?出于某种原因,每当文本或字体的任何关联属性发生更改时,字体都会重置
因此,您必须处理TextChanged
事件,然后重新应用字体。请在中查看我的代码
每当其中一个属性发生更改时,我会再次应用新字体:
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);
}
它与报告的“bug”有关。由于某种原因,每当文本或字体的任何相关属性发生更改时,字体都会重置
因此,您必须处理TextChanged
事件,然后重新应用字体。请在中查看我的代码
每当其中一个属性发生更改时,我会再次应用新字体:
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);
}
这与报告的“bug”有关