【问题标题】:populating MvxListView in MvvmCross在 MvvmCross 中填充 MvxListView
【发布时间】:2013-12-27 04:25:52
【问题描述】:

我正在使用 Visual Studio 2013 创建 MvvmCross PCL,目标框架是

  • WP8 及更高版本
  • .Net Framwork 4.5 及更高版本
  • 银光 5
  • Xamarin Android
  • Xamarin iOS

在我的一个 MvxViewModel 中,我在某个服务的数据中存储了一个 List 的公共属性。在 android 中,我用这个填充了一个 MvxListView 列表。

现在单击其中一个列表项时,我想调用新的视图模型,它也填充另一个列表。相应的 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 上。

我怎样才能做到这一点?请帮助我...... 提前感谢您提供任何有用的建议。

【问题讨论】:

    标签: mvvmcross


    【解决方案1】:

    您可以为以下各项创建属性:对象列表 (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>
    

    我认为它有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-01
      • 1970-01-01
      • 2019-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多