Xamarin.forms 向自定义UI库中定义的类添加样式

Xamarin.forms 向自定义UI库中定义的类添加样式,xamarin.forms,xamarin.forms-styles,Xamarin.forms,Xamarin.forms Styles,目前,我正在开发一个UI库,它应该包含自定义UI元素、布局和对话框,以便有一个一致且可重用的UI集合 在我的项目中,当前结构如下: UILib(库的共享代码) Droid(包含自定义渲染的android库等) UILib.iOS(包含自定义渲染器等的iOS库) UILibDemo(用于使用库的演示应用程序的共享代码) Droid(演示应用程序Android) UILibDemo.iOS(演示应用程序iOS) 在我的库中,我有一个类“LoadingDialog”,到目前为止它工作得很好。 但是

目前,我正在开发一个UI库,它应该包含自定义UI元素、布局和对话框,以便有一个一致且可重用的UI集合

在我的项目中,当前结构如下:

  • UILib(库的共享代码)
  • Droid(包含自定义渲染的android库等)
  • UILib.iOS(包含自定义渲染器等的iOS库)
  • UILibDemo(用于使用库的演示应用程序的共享代码)
  • Droid(演示应用程序Android)
  • UILibDemo.iOS(演示应用程序iOS)
在我的库中,我有一个类“LoadingDialog”,到目前为止它工作得很好。 但是,我的问题是,我现在正试图定义一种样式,以便从演示应用程序(App.xaml)的共享代码中更改LoadingDialog的某些属性:

但是,当我尝试编译演示应用程序时,出现以下错误:

严重性代码说明项目文件行抑制状态 错误位置14:13。无法解析加载对话框UILibDemo时的LabelFontFamily C:\Work\UILib\UILibDemo\UILibDemo\App.xaml 14


有什么建议我可能做错了什么吗?

解决了它。供进一步参考:

问题是登记为“FontFamily”的BindableProperty与实际的property不匹配

public string LabelFontFamily
{
    get { return (string)GetValue(FontFamilyProperty); }
    set { SetValue(FontFamilyProperty, value); }
}
将属性更改为

公共字符串系列


解决了这个问题

我认为这可能是命名问题导致了您的错误

可绑定属性使用一些“魔法”,其中
属性名称
可绑定属性
需要命名为相同的名称,但可绑定属性的末尾有一个单词属性

注意您的
BindableProperty
是如何被称为
fontfamine

将其更改为下面的应该可以修复您的错误

public static BindableProperty LabelFontFamilyProperty = BindableProperty.Create("LabelFontFamily", typeof(string), typeof(string), Font.Default.FontFamily);

public string LabelFontFamily
{
   get { return (string)GetValue(FontFamilyProperty); }
   set { SetValue(FontFamilyProperty, value); }
}

谢谢你的回答,我自己刚找到的。有时是小事情+1用于添加的解释=)
public string LabelFontFamily
{
    get { return (string)GetValue(FontFamilyProperty); }
    set { SetValue(FontFamilyProperty, value); }
}
public static BindableProperty LabelFontFamilyProperty = BindableProperty.Create("LabelFontFamily", typeof(string), typeof(string), Font.Default.FontFamily);

public string LabelFontFamily
{
   get { return (string)GetValue(FontFamilyProperty); }
   set { SetValue(FontFamilyProperty, value); }
}