Xamarin.Forms – 标签FontSize OnPlatform – XAML错误
我有这个代码:
…并得到此错误:
No property, bindable property, or event found for FontSize
我做错了什么?
谢谢。
通常当我们设置FontSize="value"
, FontSizeConverter
会转换为期望的类型 (为double
)来设置值。
但是当我们使用OnPlatform
时,看起来没有使用这个转换器。 所以我们有两个选择:
-
使用
OnPlatform
和x:Double
作为类型参数。 -
或者,欺骗XAML处理器为我们进行转换 – 我们可以通过使用
StaticResource
标记扩展来实现。 注意: 这仅适用于未应用XAMLC的情况。 -
推荐使用
NamedSize
可绑定属性扩展Label
并转换为FontSize
(基本上是FontSizeConverter
所做的)。public class ExLabel : Label { public static readonly BindableProperty FontNamedSizeProperty = BindableProperty.Create( "FontNamedSize", typeof(NamedSize), typeof(ExLabel), defaultValue: default(NamedSize), propertyChanged: OnFontNamedSizeChanged); public NamedSize FontNamedSize { get { return (NamedSize)GetValue(FontNamedSizeProperty); } set { SetValue(FontNamedSizeProperty, value); } } private static void OnFontNamedSizeChanged(BindableObject bindable, object oldValue, object newValue) { ((ExLabel)bindable).OnFontNamedSizeChangedImpl((NamedSize)oldValue, (NamedSize)newValue); } protected virtual void OnFontNamedSizeChangedImpl(NamedSize oldValue, NamedSize newValue) { FontSize = Device.GetNamedSize(FontNamedSize, typeof(Label)); } }
编辑1:选项2仅在未应用XAMLC时有效。
编辑2:添加选项3。
注意: 预发布版本中存在可用的错误修复 ,也可以将其视为替代修复。 但我无法确认它是否在最新版本中得到修复。
你应该尝试新的XAML for OnPlatform:
0 0,20,0,0