带有MvvmCross的Android Checkbox上的奇怪行为

时间:2016-06-17 14:52:48

标签: c# android xamarin mvvmcross

我这样定义MvxListView

<Mvx.MvxListView
                        android:background="@drawable/back"
                        android:layout_width="match_parent"
                        android:layout_height="175dp"
                        local:MvxBind="ItemsSource Tipos"
                        android:choiceMode="singleChoice"
                        android:fadeScrollbars="false"
                        local:MvxItemTemplate="@layout/checkboxcaptionvalue" />

@ layout / checkboxcaptionvalue 是一个简单的模板,只有一个带有一些绑定的复选框:

<CheckBox
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:local="http://schemas.android.com/apk/res-auto/Capta.Mobile.Vendas"
    local:MvxBind="Checked Selected; Text Caption"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

Tipos属性是DummyBool

的数组
private DummyBool[] _tipos;
public DummyBool[] Tipos
{
    get { return _tipos; }
    set { _tipos = value; RaisePropertyChanged(); }
}

这就是DummyBool类:

public class DummyBool
{
    public string Caption { get; set; }
    private bool _selected;

    public bool Selected
    {
        get { return _selected; }
        set { _selected = value; }
    }

}

我面临一个非常奇怪的问题:每次设置Tipos属性时,它的Selected属性都会变为 false

我尝试从RaisePropertyChanged()属性的集合中删除Tipos,这样,Selected属性不会更改,但我的UI也未更新,所以我看不到MvxListView内的复选框。我还创建了一个Button,其点击绑定到以下命令:

public IMvxCommand RaiseTiposChanged
{
    get
    {
        return new MvxCommand(() =>
        {
            RaisePropertyChanged(() => Tipos);
        });
    }
}

调用它还会将Selected属性设置为 false

修改

我以这种方式设置Tipos属性:

Tipos = _pendencias.GroupBy(p => p.Tipo)
                      .Select(g => new DummyBool { Caption = g.Key, Selected = true })
                      .ToArray();

_pendencias是一个简单的List<T>

0 个答案:

没有答案