c# - tutorial - MvvmCross vnext: monodroid binding Dictionary clave similar a wp7
mvvmcross tutorial (1)
Cuando cambio MainMenuViewModel en Tutorial.Core para usar un diccionario como este:
`public Dictionary Items {get; conjunto; } public ICommand ShowItemCommand {get {return new MvxRelayCommand> ((type) => 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)}
};
}`
La muestra funciona como se esperaba en wp7, pero con monodroid recibo un error :: "MvxBind: Error: 2,71 Problema visto durante la ejecución de enlace de Items a ItemsSource - problema ArgumentException: error al convertir parámetros" porque creo KeyValuePair Key la propiedad causa el problema en:
<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>
Gracias de antemano por tu ayuda.
El problema es que la vista mvxbindablelist espera un objeto que admita la interfaz IList, por lo que actualmente no se puede vincular a un diccionario.
Esto es lo que nos dice ''ArgumentException: no se pudieron convertir los parámetros''.
Si desea utilizar un diccionario, puede aplicar un convertidor que asigne el diccionario a una lista ()
Si crees que esta es una característica que falta en mvx, si crees que las listas deben vincularse a cualquier ienumerable (o tal vez a cualquier recopilación), registra este problema en github.
Actualización : esto se ha llevado a cabo en https://github.com/slodge/MvvmCross/issues/38 y ahora el comportamiento ha cambiado.