2016-05-05 64 views
0

在以下代碼中,我可以在微調器中顯示CategoryList項目。從mvvmcross中的微調器中檢測用戶選擇

我的問題,我怎麼能夠檢測到哪一個被選中?

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

使用[斯文 - 邁克爾STUBE(https://stackoverflow.com/questions/37058772/detect-user-selection-from-spinner-in-mvvmcross#answer-37059047)的答案,嘗試更新你的'ChosenCategory'屬性來觸發'INotifyPropertyChanged'例如'int _chosenCategory; public int ChosenCategory {get {return _chosenCategory; } set {SetProperty(ref _chosenCategory,value); }}' – Plac3Hold3r

+0

它沒有工作。它不調用'set'方法。 – hotspring

回答

7

您可以通過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" /> 

其綁定,並確保你在你SETU有這個p系列:

public class Setup : MvxAndroidSetup 
{ 
    // ... 

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

它沒有工作。 – hotspring

+0

因爲您尚未正確設置應用程序compat庫。我將設置代碼添加到答案中。 –

+0

我在'FillTargetFactories'方法下面有'registry.RegisterFactory(new MvxCustomBindingFactory (「MyItemSelected」,view => new MyItemSelectedBinding(view)));' – hotspring

相關問題