如何Mvvm交叉绑定drawableId到Imageview
How to MvvmCross Bind drawableId To Imageview
如何return转换器中的DrawableId
?
我的布局文件:
<ImageView
android:id="@+id/imgTest"
android:src="@drawable/Img_Test"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxHeight="80dp"
android:maxWidth="80dp"
android:layout_margin="20dp"
android:scaleType="fitCenter"
local:MvxBind ="DrawableId MySwapImage(true)" />
资源文件夹中有两张图片
- ImgTest1.png
- ImgTest2.png
我的价值转换器:
public class MySwapImageValueConverter : MvxValueConverter<bool, int>
{
protected override int Convert(bool value, Type targetType, object parameter, CultureInfo culture)
{
if(value)
{
// ImgTest1
}
else
{
// ImgTest2
}
}
}
你的问题是这个 Converter
不应该在你的 .Core
项目中(你的 VM 所在的项目)。此代码是特定于平台的,因为它将布尔值(与您的业务逻辑相关的东西)更改为 Drawable(仅存在于 Android 上的东西)。既然如此,它应该属于您的 .Droid
项目。
在我的项目中,我在 Droid 项目中创建了一个 Converters
文件夹来存储我所有的平台特定转换器。 MySwapImageValueConverter
的代码应如下所示
using System;
using System.Globalization;
using Cirrious.CrossCore.Converters;
namespace MilkBottle.Droid.Converters
{
public class MySwapImageValueConverter : MvxValueConverter<bool, int>
{
#region Methods
protected override int Convert(bool value, Type targetType, object parameter, CultureInfo culture)
{
var result = value ? Resource.Drawable.ImgTest1: Resource.Drawable.ImgTest2;
return result;
}
#endregion
}
}
如何return转换器中的DrawableId
?
我的布局文件:
<ImageView
android:id="@+id/imgTest"
android:src="@drawable/Img_Test"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxHeight="80dp"
android:maxWidth="80dp"
android:layout_margin="20dp"
android:scaleType="fitCenter"
local:MvxBind ="DrawableId MySwapImage(true)" />
资源文件夹中有两张图片
- ImgTest1.png
- ImgTest2.png
我的价值转换器:
public class MySwapImageValueConverter : MvxValueConverter<bool, int>
{
protected override int Convert(bool value, Type targetType, object parameter, CultureInfo culture)
{
if(value)
{
// ImgTest1
}
else
{
// ImgTest2
}
}
}
你的问题是这个 Converter
不应该在你的 .Core
项目中(你的 VM 所在的项目)。此代码是特定于平台的,因为它将布尔值(与您的业务逻辑相关的东西)更改为 Drawable(仅存在于 Android 上的东西)。既然如此,它应该属于您的 .Droid
项目。
在我的项目中,我在 Droid 项目中创建了一个 Converters
文件夹来存储我所有的平台特定转换器。 MySwapImageValueConverter
的代码应如下所示
using System;
using System.Globalization;
using Cirrious.CrossCore.Converters;
namespace MilkBottle.Droid.Converters
{
public class MySwapImageValueConverter : MvxValueConverter<bool, int>
{
#region Methods
protected override int Convert(bool value, Type targetType, object parameter, CultureInfo culture)
{
var result = value ? Resource.Drawable.ImgTest1: Resource.Drawable.ImgTest2;
return result;
}
#endregion
}
}