Xamarin.forms 将URL绑定到自定义SVG容器';s可绑定属性

Xamarin.forms 将URL绑定到自定义SVG容器';s可绑定属性,xamarin.forms,Xamarin.forms,我一直在使用代码布局为Xamarin表单项目创建SVG容器。它工作得很好,我重新配置它从远程URL读取图像 ResourceId来自上述来源: 公共静态只读BindableProperty SvgUriProperty=BindableProperty.Create( “资源ID”, 类型(字符串), 类型(SvgUriContainer), 默认值(字符串), 属性更改:重新绘制画布); 公共字符串资源ID { get=>(字符串)GetValue(SvgUriProperty); set=>

我一直在使用代码布局为Xamarin表单项目创建SVG容器。它工作得很好,我重新配置它从远程URL读取图像

ResourceId
来自上述来源:

公共静态只读BindableProperty SvgUriProperty=BindableProperty.Create( “资源ID”, 类型(字符串), 类型(SvgUriContainer), 默认值(字符串), 属性更改:重新绘制画布); 公共字符串资源ID { get=>(字符串)GetValue(SvgUriProperty); set=>SetValue(SvgUriProperty,value); } 但是,我似乎无法在运行时在XAML中绑定该URL:


该绑定返回一个字符串,其余绑定工作正常。以这种方式进行绑定的任何尝试都会导致生成错误:

No property, bindable property, or event found for 'ResourceId', or mismatching type between value and property.
无论我在创建
BindableProperty
的容器逻辑中做什么,错误都是相同的,并且在XAML中。我在XAML中的语法是否有误?是因为
Binding
在构建时是
BindingExtension
(不是字符串)吗

注意:如果我用字符串/URL替换绑定,那么一切都正常


注意:如果我将
ResourceId
的类型设置为
object
,我可以通过生成错误获取,但字符串当然无法解析。

您是否可以尝试将bindableProperty修改为以下所述的标准格式:


Xamarin需要一个属性命名约定。

共享ResourceID属性的代码将非常有用。应该包括在内。很高兴看到我的博客文章实际上是在帮助别人!:)您共享的代码在我看来很好,甚至可以在我这边编译。你能再分享一些代码吗?e、 g.您的视图模型、控件(如果您做了任何更改)或xaml本身?@AlexPshul cool-是的,很棒的博客文章!我不能真正共享代码,但是我已经在一旁构建了一个项目来隔离代码。今晚我将尝试复制并分享源代码。@AlexPshul我能够在一个简单得多的项目中使其正常工作。对于露齿而笑的人和任何感兴趣的人,我都推它。基本上是SvgFx代码的一个稍加修改的克隆。我将不得不对我的代码进行一些重构,以使绑定正常工作……我尝试过了,尽管我的绑定问题在别处。不过,感谢命名约定指针!如果你能分享你的项目,我可以帮你测试。
  public static readonly BindableProperty SvgUriProperty = BindableProperty.Create(
      "SvgUri",
      typeof(string),
      typeof(EventToCommandBehavior),
      "test",
      propertyChanged: RedrawCanvas);


    public string SvgUri
    {
        get => (string)GetValue(SvgUriProperty);
        set => SetValue(SvgUriProperty, value);
    }