我这样定义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>
。