Xamarin表单 - 根据绑定数据更改ListView中的图像

时间:2017-11-23 15:53:28

标签: listview xamarin.forms

我们正在尝试向Xamarin Forms ListView添加功能,其中图像将根据特定值进行更改。问题是图像不显示,即使该值与模型相同。

XAML页面

.....

xmlns:images="clr-namespace:Cat;assembly=Cat"

...

<Image Grid.Row="0" Grid.RowSpan="3" Grid.Column="1"
    Style="{DynamicResource ListItemImageStyle}"
    HorizontalOptions="EndAndExpand"
    VerticalOptions="Center">
<Image.Triggers>
    <DataTrigger TargetType="Image"
                   Binding="{Binding Status}"
                   Value="Urgent">
         <Setter Property="Source" Value="{images:ImageResource Cat.about.png}" />
    </DataTrigger>
    <DataTrigger TargetType="Image"
                   Binding="{Binding Status}"
                   Value="B">
                   <Setter Property="Source" Value="{images:ImageResource Cat.new.png}" />
                   </DataTrigger>
</Image.Triggers>
</Image>

ImageResourceExtension CS文件

 [Preserve(AllMembers = true)]
 [ContentProperty("Source")]
public class ImageResourceExtension : IMarkupExtension
{
    public string Source { get; set; }

    public object ProvideValue(IServiceProvider serviceProvider)
    {
        if (Source == null)
            return null;

        // Do your translation lookup here, using whatever method you require
        var imageSource = ImageSource.FromResource(Source);

        return imageSource;
    }
}

图像“about.png”位于同一项目的根目录中。

数据绑定并正确显示,仅显示图像。

我想知道这是否是最佳方法?

1 个答案:

答案 0 :(得分:2)

我认为

Value="{images:ImageResource Cat.new.png}"

不正确。看看这里......

Xamarin Forum

我认为你应该使用像

这样的东西
Value="{images:ImageResource CatMobile.Resources.MYNAME.png}"

您还应该查看xamarin-forms/user-interface/images

我还将图像添加为&#34; Embeded Resource&#34;在属性和这工作得很好。