2016-05-05 5 views
0

Im folgenden Code konnte ich die CategoryList Elemente im Spinner anzeigen.Benutzerauswahl aus Spinner in mvvmcross erkennen

Meine Frage, wie kann ich erkennen, welche ausgewählt ist?

ViewModel.cs

public List<int> CategoryList 
{ 
    get { return new List<int> { 1,2,3,4,5,6,7,8,9,10 }; } 
} 

int _chosenCategory; 
public int ChosenCategory { 
    get { return _chosenCategory; } 
    set { SetProperty(ref _chosenCategory, value); 
    } 
} 

ViewModel.axml

<LinearLayout 
    android:layout_weight="1" 
    android:layout_width="0dp" 
    android:layout_height="match_parent"> 
    <mvvmcross.droid.support.v7.appcompat.widget.MvxAppCompatSpinner 
     android:layout_width="100dp" 
     android:layout_height="match_parent" 
     local:MvxItemTemplate="@layout/xxx" 
     local:MvxBind="ItemsSource CategoryList;SelectedItem ChosenCategory" /> 
</LinearLayout> 
+0

mit [Sven-Michael Stübe] (https://stackoverflow.com/questions/37058772/detect-user-selection-from-spinner-in-mvvmcross#answer-37059047) Antwort, versuchen Aktualisieren Sie Ihre 'ChosenCategory' -Eigenschaft, um die' INotifyPropertyChanged' auszulösen, zB 'int _chosenKategorie; public int Gewählte Kategorie {get {return _chosenCategory; } set {SetProperty (ref _chosenCategory, value); }} ' – Plac3Hold3r

+0

es hat nicht so gut funktioniert. es ruft nicht 'set' Methode auf. – hotspring

Antwort

7

Sie können ihn binden über SelectedItem

<mvvmcross.droid.support.v7.appcompat.widget.MvxAppCompatSpinner 
    android:layout_width="100dp" 
    android:layout_height="match_parent" 
    local:MvxItemTemplate="@layout/category_spinner" 
    local:MvxBind="ItemsSource CategoryList; SelectedItem ChosenCategory" /> 

und stellen Sie sicher, dass Sie diese Setu in dir p class:

public class Setup : MvxAndroidSetup 
{ 
    // ... 

    protected override void FillTargetFactories(IMvxTargetBindingFactoryRegistry registry) 
    { 
     MvxAppCompatSetupHelper.FillTargetFactories(registry); 
     base.FillTargetFactories(registry); 
    } 
} 
+0

hat es nicht funktioniert. – hotspring

+0

Weil Sie die app compat-Bibliothek nicht korrekt eingerichtet haben. Ich habe den Setup-Code zur Antwort hinzugefügt. –

+0

Ich habe folgendes in der 'FillTargetFactories' Methode' registry.RegisterFactory (new MvxCustomBindingFactory ("MyItemSelected", Ansicht => new MyItemSelectedBinding (view))); ' – hotspring