我使用Visual Studio 2013创建MvvmCross PCL,目标框架是
在我的一个MvxViewModel中,我有一个List的公共属性,来自某些服务的数据得到了存储。在android中,我用这个填充了一个MvxListView 列表。
现在点击其中一个listitem我想调用新的viewModel,它也会填充另一个List.And对应的MvxListView将有一个ItemTemplate,如下所示
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res/KittensView.Droid"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="40dp"
local:MvxBind="Text Name" />
<RatingBar
android:layout_width="fill_parent"
android:layout_height="wrap_content"
local:MvxBind="Text Rating" />
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Next" />
</LinearLayout>
在这个axml布局中,我想一次显示一个listItem,点击上面的按钮,下一个listItem应该替换现有的listItem,直到相应List中的所有数据都显示在UI上。
我怎样才能做到这一点?请帮助我...... 提前感谢任何有用的建议。
答案 0 :(得分:0)
您可以为以下内容创建属性:对象列表(DataItem),对象实例和索引
private int _index = 0;
private List<DataItem> _dataitems;
private DataItem _dataItem;
public DataItem DataItem {
get { return _dataItem; }
set
{
DataItem = value;
RaiseOnProperty(()=>DataItem);
}
public IMvxCommand ShowNextItemCommand
{
get
{
return new MvxCommand(()=> {
_index++;
DataItem = _dataitems.ElementAt[_index]
});
}
}
在您的AXML中,您可以执行以下操作:
<?xml ... />
<LinearLayout ...
<TextView ...
local:MvxBind="Text Name1" />
<TextView ...
local:MvxBind="Text Name2" />
<Button ...
android:text="Next"
local:MvxBind="Click ShowNextItemCommand" />
</LinearLayout>
我认为它有效。