1

Tutorial.Core の MainMenuViewModel を次のように Dictionary を使用するように変更すると、次のようになります。

`パブリック ディクショナリ アイテム { get; 設定; } 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)}
                };
}`

サンプルは wp7 で期待どおりに動作していますが、モノドロイドではエラーが発生します::「MvxBind:Error: 2,71 Problem seen during binding execution for from Items to ItemsSource - problem ArgumentException: failed to convert parameters」プロパティは、次の問題を引き起こします。

<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>

よろしくお願いします。

4

1 に答える 1

2

問題は、mvxbindablelistview が IList インターフェイスをサポートするオブジェクトを想定しているため、現在 Dictionary にバインドできないことです。

これは、「ArgumentException: パラメーターの変換に失敗しました」が教えてくれることです。


辞書を使用する場合は、辞書を List() にマップするコンバーターを適用できます


これが mvx に欠けている機能だと思われる場合 - リストが任意の列挙型 (またはおそらく任意の icollection) にバインドする必要があると思われる場合は、これが github の問題であることを記録してください。


更新- これはhttps://github.com/slodge/MvvmCross/issues/38で追跡されており、動作が変更されました。

于 2012-10-15T17:02:06.687 に答える