1

相対レイアウトでMvxBindableGridViewを使用していましたが、完全に機能していました。次に、画面をさまざまなデバイス間で適切に拡大縮小するには、LinearLayoutsを使用する必要があることに気付きました。LinearLayoutに変更してアプリを実行すると、GridViewが空になり、デバッグ出力にいくつかのバインディングエラーが表示されます

12-03 16:55:38.363 I/MvxBind ( 2689):  14.25 Failed to create target binding for from ClickCommand to ClickItemSquare
MvxBind:Warning: 14.25 Failed to create target binding for from ClickCommand to ClickItemSquare
12-03 16:55:38.363 I/mono-stdout( 2689): MvxBind:Warning: 14.25 Failed to create target binding for from ClickCommand to ClickItemSquare

それがRelativeLayoutで完全に機能するのになぜこれが失敗したのか誰かが知っていますか?

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res/xxxxx"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<RelativeLayout
    android:id="@+id/layoutresults"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <TextView
        android:id="@+id/textscore"
        local:MvxBind="{'Text':{'Path':'Score'}}"
        android:layout_width="50dp"
        android:layout_height="wrap_content"
        android:text="0000"
        android:textColor="#ff60350f"
        android:textSize="20dp"
        android:layout_x="25dp"
        android:layout_y="45dp"
        android:textStyle="bold"
        android:gravity="center"
        android:layout_marginTop="53dp"
        android:layout_marginLeft="25dp" />
    <TextView
        android:id="@+id/layoutstartnewgame"
        android:layout_width="100dp"
        android:layout_height="65dp"
        android:layout_x="109dp"
        android:layout_y="23dp"
        android:textStyle="bold"
        local:MvxBind="{'Click':{'Path':'StartNewGame'}}"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="27dp" />
    <TextView
        android:id="@+id/texttime"
        local:MvxBind="{'Text':{'Path':'Time'}}"
        android:text="00:00"
        android:textColor="#ff60350f"
        android:textSize="20dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="245dp"
        android:layout_y="45dp"
        android:textStyle="bold"
        android:layout_marginTop="53dp"
        android:layout_alignParentRight="true"
        android:layout_marginRight="23dp" />
</RelativeLayout>
<cirrious.mvvmcross.binding.android.views.MvxBindableGridView
    android:layout_below="@+id/layoutresults"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:numColumns="4"
    android:gravity="center"
    android:listSelector="#00000000"
    local:MvxItemTemplate="@layout/itemimage"
    local:MvxBind="{'ItemsSource':{'Path':'Squares'}, 'ClickItemSquare':{'Path':'ClickCommand'}}"
    android:layout_marginTop="8dp" />
</RelativeLayout>

リニアに変更

<?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/xxxxx"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/TabletGameScreen">
<LinearLayout
    android:layout_width="fill_parent"
    android:orientation="vertical"
    android:layout_weight=".1"
    android:gravity="center" />
<LinearLayout
    android:id="@+id/layoutresults"
    android:orientation="horizontal"
    android:gravity="center_vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight=".1">
    <TextView
        android:id="@+id/textscore"
        local:MvxBind="{&apos;Text&apos;:{&apos;Path&apos;:&apos;Score&apos;}}"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="0000"
        android:textColor="#ff60350f"
        android:textSize="20dp"
        android:textStyle="bold"
        android:gravity="center_horizontal"
        android:layout_gravity="center_vertical" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:textStyle="bold"
        local:MvxBind="{&apos;Click&apos;:{&apos;Path&apos;:&apos;StartNewGame&apos;}}"
        android:layout_centerHorizontal="true"
        android:layout_gravity="center_vertical" />
    <TextView
        android:id="@+id/texttime"
        local:MvxBind="{&apos;Text&apos;:{&apos;Path&apos;:&apos;Time&apos;}}"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="00:00"
        android:textColor="#ff60350f"
        android:textSize="20dp"
        android:textStyle="bold"
        android:layout_gravity="center_vertical"
        android:gravity="center_horizontal" />
</LinearLayout>
<cirrious.mvvmcross.binding.android.views.MvxBindableGridView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight=".8"
    android:numColumns="4"
    android:gravity="center"
    android:listSelector="#00000000"
    local:MvxItemTemplate="@layout/itemimage"
    local:MvxBind="{&apos;ItemsSource&apos;:{&apos;Path&apos;:&apos;Squares&apos;}, &apos;ClickItemSquare&apos;:{&apos;Path&apos;:&apos;ClickCommand&apos;}}" />
</LinearLayout>
4

1 に答える 1

1

ClickItemSquare の警告は、何らかのバインディングが発生しているが、ClickCommand が機能していないことを示しています。

あなたの質問にあるわずかな情報に基づいて...

  • ClickCommand がどのように実装されているかを見てください-アイテム GridView をクリックしたときに ImageView インスタンスを返すことに基づいていると思います- しかし、それはあなたのコードなので、他の誰もあなたを助けることはできません (あなたが投稿しない限り)
  • バインディング トレース レベルを Verbose/Diagnostic に設定して、詳細情報を取得してみてください (これを行う方法については、MvxBindingTrace を参照してください - 設定する静的変数値があります)。
  • LinearLayout に android:orientation='vertical' があることを確認してください
  • コードをステップ実行してみてください - ViewModel リスト項目のプロパティ値が呼び出されていますか? そうであれば、バインディングが機能していることがわかります
  • Grid コードに戻してみてください - 同じ ClickItemSquare 警告が表示されますか?
  • 変更に関するより詳細な質問を投稿してみてください (例: 前後のコード)
于 2012-12-04T08:20:25.163 に答える