MvvmCross vnext:MonoDroid的结合辞典键类似于WP7(MvvmCross vn

2019-10-17 07:37发布

当我改变MainMenuViewModel在Tutorial.Core使用词典是这样的:

'公共字典项{获得; 组; }公共的ICommand ShowItemCommand {{返回新MvxRelayCommand>((类型)=> DoShowItem(type.Value)); }}

public void DoShowItem(Type itemType)
{
    this.RequestNavigate(itemType);
}

public MainMenuViewModel()
{
    Items = new Dictionary<string, Type>()
                {
                    {"SimpleTextProperty",  typeof(Lessons.SimpleTextPropertyViewModel)},
                    {"PullToRefresh",  typeof(Lessons.PullToRefreshViewModel)},
                    {"Tip",  typeof(Lessons.TipViewModel)},
                    {"Composite",typeof(Lessons.CompositeViewModel)},
                    {"Location",typeof(Lessons.LocationViewModel)}
                };
}`

样品正按预期在WP7,但MonoDroid的我得到一个错误::“MvxBind:错误:2,71问题从项目到绑定的ItemsSource执行过程中看到的 - 问题的ArgumentException:未能参数转换”,因为我觉得KeyValuePair关键财产造成的问题:

<LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:local="http://schemas.android.com/apk/res/Tutorial.UI.Droid"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
          android:layout_margin="12dp"
        android:orientation="vertical">
<TextView
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:text="View Model:"
        />
  <TextView
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:textAppearance="?android:attr/textAppearanceLarge"
          local:MvxBind="{'Text':{'Path':'Key'}}"
        />
</LinearLayout>

在此先感谢您的帮助。

Answer 1:

的问题是,mvxbindablelistview期望支持IList接口的对象 - 因此它不能当前绑定到一个字典。

这是什么“的ArgumentException:未能参数转换”告诉我们。


如果你想使用字典,那么你可以申请该字典映射到一个列表中的一个转换器()


如果你认为这是MVX缺少功能 - 如果你觉得列表应绑定到任何的IEnumerable(或者任何ICollection的),那么请登录这是GitHub上的问题。


更新 -这一直奉行对https://github.com/slodge/MvvmCross/issues/38 -现在的行为改变。



文章来源: MvvmCross vnext: monodroid binding Dictionary Key similar to wp7