2014-01-05 47 views
5

我使用MvvmCross 3.0.14與Xamarin.Android。MvxImageView,無法將ImageUrl綁定到本地資源

我有一個MvxImageView我可以得到採用了android,如果我直接指定圖像(不綁定)來顯示特定的本地圖形資源:SRC:

<Mvx.MvxImageView 
    android:layout_width="100dp" 
    android:layout_height="75dip" 
    android:layout_weight="1" 
    android:src="@drawable/Card_kh"/> 

但我不能得到相同的圖像使用本地顯示:MvxBind:

<Mvx.MvxImageView 
    android:layout_width="100dp" 
    android:layout_height="75dip" 
    android:layout_weight="1" 
    local:MvxBind="ImageUrl 'res:Card_kh'"/> 

這是行不通的。 MvxAndroidLocalFileImageLoader.LoadResourceBitmap記錄指示'Card_kh'不是已知可繪製名稱的跟蹤消息。令人鼓舞的是,它得到了很多 - 至少我知道這些信息的預期消費者確實得到了它。但顯然我沒有以正確的格式提供這些信息。

更進一步,我的實際目標是讓我的ViewModel決定應該使用什麼資源,例如,

class MyViewModel : MvxViewModel 
{ 
    public string SomeImagePath { get { return "res:Card_kh"; } } 
} 

<Mvx.MvxImageView 
    android:layout_width="100dp" 
    android:layout_height="75dip" 
    android:layout_weight="1" 
    local:MvxBind="ImageUrl SomeImagePath"/> 

什麼我需要做的,有一個MvxImageView綁定到視圖模型來確定本地資源的形象?

回答

8

問題是資源名稱中只有大寫字母。雖然圖像文件名以大寫C開頭,和android:src屬性可與大寫的C,的ImageUrl的MvxBind需要一個小寫字母c:

<Mvx.MvxImageView 
    android:layout_width="100dp" 
    android:layout_height="75dip" 
    android:layout_weight="1" 
    local:MvxBind="ImageUrl 'res:card_kh'"/> 

這也解決了問題時的ImageUrl價值的源泉是一個視圖模型屬性:

class MyViewModel : MvxViewModel 
{ 
    public string SomeImagePath { get { return "res:card_kh"; } } 
} 

<Mvx.MvxImageView 
    android:layout_width="100dp" 
    android:layout_height="75dip" 
    android:layout_weight="1" 
    local:MvxBind="ImageUrl SomeImagePath"/>