2016-07-05 2 views
0

У меня есть следующие xml и ViewModel исходный код. Я работаю над radiogroup, где у меня есть два радиоблока (Мужской и Женский). Сначала я хочу выбрать Male (по умолчанию). Однако моя текущая реализация не отображает какой-либо из переключателей. Оба они показаны как не selected.I я использую MvvmCross версии 4.0Внедрение RadioGroup в MVVMCross

XML

<mvvmcross.droid.support.v7.appcompat.widget.MvxAppCompatRadioGroup 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    local:MvxItemTemplate="@layout/item_radio" 
    local:MvxBind="ItemsSource Items;ItemSelected SelectedItem" /> 

Item_radio.xml

<?xml version="1.0" encoding="utf-8"?> 
<RadioButton xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:local="http://schemas.android.com/apk/res-auto" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:textSize="12sp" 
    local:MvxBind="Text Caption" /> 

ViewModel.cs

private List<Thing> _items = new List<Thing>() 
{ 
    new Thing("Male"), 
    new Thing("Female"), 
}; 

public List<Thing> Items 
{ 
    get { return _items; } 
    set { _items = value; RaisePropertyChanged(() => Items); } 
} 

private Thing _selectedItem = new Thing("Male"); 
public Thing SelectedItem 
{ 
    get 
    { 
    return _selectedItem; 
    } 
    set 
    { 
    _selectedItem = value; 
    RaisePropertyChanged(() => SelectedItem); 
    } 
} 

В Setup.cs

registry.RegisterFactory(new MvxCustomBindingFactory<MvxAppCompatRadioGroup>("ItemSelected", view => new MyRadioItemSelectedBinding(view))); 
+0

, что делает ваш шаблон макета "item_radio" выглядеть? – Plac3Hold3r

+0

Я добавил, пожалуйста, уточните обновление – hotspring

ответ

2

Проблема, кажется, вы связывался с ItemSelected вместо SelectedItem.

Ваш XML контроль макет должен быть:

<mvvmcross.droid.support.v7.appcompat.widget.MvxAppCompatRadioGroup 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    local:MvxItemTemplate="@layout/item_radio" 
    local:MvxBind="ItemsSource Items; SelectedItem SelectedItem" /> 
+0

Пожалуйста, проверьте мой Setup.cs, просто добавленный в вопрос. – hotspring

+0

@hotspring, как выглядит 'MyRadioItemSelectedBinding'? Есть ли конкретная причина, по которой вам нужно использовать пользовательскую привязку по уже включенному SelectedItem? – Plac3Hold3r

+0

Я только что использовал 'SelectedItem', и он сработал! Я обновил MvvmCross 4.0 до 4.2.1 и использовал 'SelectedItem' – hotspring