【问题标题】:Using binding inside Xamarin XAML Extension在 Xamarin XAML 扩展中使用绑定
【发布时间】:2017-04-22 09:06:20
【问题描述】:

我正在尝试将 EmbeddedImages 绑定到 ListView,以便可以根据列表项显示不同的图标。使用Working with Images 教程,我设法制作了一个扩展来显示嵌入的图像,但前提是我将位置硬编码为图标。

所以这行得通:

<Image Source="{local:ImageResource (namespace).icon.png}"/>

但我无法绑定到我想要的图标。我已经尝试了所有这些,但都没有奏效:

<Image Source="{local:ImageResource {Binding _iconLocation}}" />

<Image Source="{Binding Source=local:ImageResource, Path=_iconLocation}"/>

【问题讨论】:

    标签: c# xaml xamarin binding


    【解决方案1】:

    如果您想使用绑定,则无需使用标记扩展。扩展完成“因为没有从字符串到 ResourceImageSource 的内置类型转换器”。 在你的模型中定义

    public ImageSource MyImageSource
            {
                get
                { //here you decide what resource to use
                    return ImageSource.FromResource("(namespace).icon.png"); 
                }
            }
    

    然后在xaml中使用

     <Image Source="{Binding MyImageSource}" />
    

    而且你不需要任何扩展类

    【讨论】:

    • 抱歉投反对票!不要刻薄:根据微软自己的文档,这是一个明智的解决方案,但它不会起作用。仅当您使用编译器指令在每个平台上自定义资源路径时,它才会起作用。然而,这与跨平台编码相反。 OP 提出的实际问题(如果可以回答)将是以真正的跨平台方式动态设置图像的唯一方法。你需要一个标记扩展,你需要一些方法来动态指定local:ImageResource之后使用的字符串。
    猜你喜欢
    • 1970-01-01
    • 2017-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-03
    • 2017-06-03
    相关资源
    最近更新 更多