我们正在尝试向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”位于同一项目的根目录中。
数据绑定并正确显示,仅显示图像。
我想知道这是否是最佳方法?
答案 0 :(得分:2)
我认为
Value="{images:ImageResource Cat.new.png}"
不正确。看看这里......
我认为你应该使用像
这样的东西Value="{images:ImageResource CatMobile.Resources.MYNAME.png}"
您还应该查看xamarin-forms/user-interface/images
我还将图像添加为&#34; Embeded Resource&#34;在属性和这工作得很好。