2015-08-24 52 views
4

如何在Converter中返回DrawableId如何將MvvmCross綁定drawableId到Imageview

我的佈局文件:

<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)" /> 

我在資源文件夾兩個圖像

  1. ImgTest1.png
  2. 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 
     } 
    } 
} 
+1

您可以這樣做:return Resource.Drawable.ImgTest1; – Martijn00

+0

只看我的答案在您的問題在下面的頁面:http://stackoverflow.com/a/32090425/2653134(sovled與字符串返回,而不是整數) – Joehl

+0

@Martijn名稱'資源'在當前上下文中不存在是我使用時出現的錯誤消息:Resource.drawable.ImgTest1什麼似乎是問題? – MilkBottle

回答

3

你的問題是這個Converter不應該在你的.Core項目中(你的虛擬機所在的項目)。此代碼是特定於平臺的,因爲它將布爾值(與您的業務邏輯相關的內容)更改爲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 
    } 
} 
+0

我會按照您的指南在我嘗試後回到這裏 – MilkBottle

+0

如何從PCL調用轉換器? –

相關問題