2014-01-05 4 views
5

Ich benutze MvvmCross 3.0.14 mit Xamarin.Android.MvxImageView, kann ImageUrl nicht an lokale Ressource binden

Ich habe eine MvxImageView, die ich bekommen kann eine bestimmte lokale Grafikressource anzuzeigen, wenn ich das Bild direkt angeben (ohne Bindung) mit Android: src:

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

Aber ich kann nicht das gleiche Bild erhalten mit local angezeigt werden: MvxBind:

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

Dies funktioniert nicht. MvxAndroidLocalFileImageLoader.LoadResourceBitmap protokolliert eine Ablaufverfolgungsnachricht, die angibt, dass "Card_kh" kein bekannter Name ist. Es ist ermutigend, dass es so weit gekommen ist - zumindest weiß ich, dass der beabsichtigte Verbraucher dieser Information es verstanden hat. Aber anscheinend habe ich diese Information nicht im richtigen Format zur Verfügung gestellt.

Wenn ich einen Schritt weiter gehe, ist mein eigentliches Ziel, dass mein ViewModel bestimmt, welche Ressource verwendet werden soll, z.

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

und

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

Was muss ich tun, um eine MvxImageView Bindung an einen View-Modell zu haben, bestimmt lokale Ressource Bild?

Antwort

8

Das Problem war nur Großschreibung im Ressourcennamen. Obwohl das Bild Dateiname mit einem Kapital C beginnt, und der Androide: src-Attribut arbeitet mit einem Kapital C erfordert die MvxBind von ImageUrl einen Klein c:

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

Dies löst auch das Problem, wenn die Quelle des ImageUrl Wertes ist ein Viewmodel Eigenschaft:

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

und

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