Xamarin.Forms – 标签FontSize OnPlatform – XAML错误

我有这个代码:

 

…并得到此错误:

 No property, bindable property, or event found for FontSize 

我做错了什么?

谢谢。

通常当我们设置FontSize="value"FontSizeConverter会转换为期望的类型 (为double )来设置值。

但是当我们使用OnPlatform时,看起来没有使用这个转换器。 所以我们有两个选择:

  1. 使用OnPlatformx:Double作为类型参数。

      
  2. 或者,欺骗XAML处理器为我们进行转换 – 我们可以通过使用StaticResource标记扩展来实现。 注意: 这仅适用于未应用XAMLC的情况。

           
  3. 推荐使用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