我正在尝试绑定图片的src。
我尝试过像这样使用MvxHttpImageView
<Mvx.MvxHttpImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/iconeView"
local:MvxBind="{'ImageUrl':{'Path':'ImgSrc'}}" />
带
public string ImgSrc
{
get {return "@res/drawable/icon.png"; }
}
我已经尝试了其他几个ImgSrc但仍然没有任何结果。
icon.png位于我的Resources / Drawable目录中,是一个AndroidResource
任何帮助都会很棒! 感谢
答案 0 :(得分:14)
较新版本的MvvmCross支持绑定到可绘制资源。使用DrawableName binding,您可以将ImageView绑定到包含可绘制名称的viewmodel上的属性。
using System;
using Cirrious.MvvmCross.ViewModels;
namespace MyApp.ViewModels
{
public class UserProfileViewModel : MvxViewModel
{
// set this to the name of one of the files
// in your Resources/drawable/drawable-xxxx folders
private MyDrawable _myDrawable;
public string MyDrawable {
get { return _myDrawable; }
set {
_myDrawable = value;
RaisePropertyChanged (() => MyDrawable);
}
}
}
}
并在你的布局中
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
local:MvxBind="DrawableName MyDrawable"/>
或者,如果您的VM属性为int
答案 1 :(得分:6)
mvxhttpimageview知道如何从http和'disk'
加载图像可悲的是,它不知道如何从资源加载
但是,有一些方法可以让图像加载静态内容。
要尝试第一个,请查看会议示例 - 最喜欢的按钮背景如何绑定到IsFavorite
做第二个:
在实际使用中,我通常也使用转换器 - 将状态视图模型属性映射为具有值LoadingState.Loading到资产图像路径(如'/loadingimages/loading.png')
抱歉,答案中不包含更多代码 - 在移动设备上接听
答案 2 :(得分:4)
我构建了一个转换器,它将一个可绘制的名称转换为一个Bitmap,并将Bitmap绑定到ImageView。
转换器:
public class ImageNameToBitmapConverter : MvxValueConverter<string, Bitmap>
{
protected override Bitmap Convert(string value, Type targetType, object parameter, CultureInfo culture)
{
var topActivity = Mvx.Resolve<IMvxAndroidCurrentTopActivity>();
var bm = BitmapFactory.DecodeResource(topActivity.Activity.Resources, GetResourceId(value, "drawable", topActivity));
return bm;
}
private static int GetResourceId(string variableName, string resourceName, IMvxAndroidCurrentTopActivity topActivity)
{
try
{
return topActivity.Activity.Resources.GetIdentifier(variableName, resourceName, topActivity.Activity.PackageName);
}
catch (Exception)
{
return -1;
}
}
}
XML视图:
<ImageView
local:MvxBind="Bitmap Icon, Converter=ImageNameToBitmap"
android:layout_width="100dp"
android:layout_height="100dp" />
Icon
属性我的绑定是一个字符串,如:&#34; icon_name &#34;我将图片icon_name.png
放在Android项目的Resources/drawable
答案 3 :(得分:0)
对于最新的MvvmCross,下一个解决方案是实际的:
在标记中:
<ImageView
android:id="@+id/iconImage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:layout_centerVertical="true"
local:MvxBind="DrawableName Type, Converter=TypeToImageStringConverter" />
转换器:
public class TypeToImageStringConverter : MvxValueConverter<VacationType, int>
{
protected override int Convert(VacationType value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
switch (value)
{
case VacationType.RegularVacation:
return Resource.Drawable.Icon_Request_Green;
case VacationType.SickLeave:
return Resource.Drawable.Icon_Request_Blue;
case VacationType.LeaveWithoutPay:
return Resource.Drawable.Icon_Request_Dark;
case VacationType.OvertimeVacation:
return Resource.Drawable.Icon_Request_Gray;
case VacationType.ExceptionalLeave:
return Resource.Drawable.Icon_Request_Plum;
default:
return Resource.Drawable.Icon_Request_Gray;
}
}
}
所有意义都是你必须提供一个可绘制的资源ID。