1

ViewModel State に従って LinearLayout を表示/非表示にバインドしようとしています。何らかの理由で、ボタンとテキストビューではうまく機能しますが、LinearLayout では機能しません。

その理由は何ですか?

 <LinearLayout
                android:orientation="vertical"
                android:minWidth="25dp"
                android:minHeight="25dp"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                local:MvxBind="Visibility WaitingForConfirmation">
4

1 に答える 1

4

bool Visible疑似プロパティを使用して簡単なテストを試みたところ、両方TextViewで機能しましたLinearLayout

<TextView
    android:text="Random text"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    local:MvxBind="Visible Generosity &gt; 12" />
<LinearLayout
    android:orientation="vertical"
    android:minWidth="25dp"
    android:minHeight="25dp"
    android:background="#ff0000"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    local:MvxBind="Visible Generosity &gt; 12" />

このVisibilityプロパティは、同じ基礎となる Android の非表示/表示メカニズムにバインドします。Visibility プラグインを使用して変換bool-> Visibilityenum を使用するだけなので、コードはそのためにも機能するはずです...


更新: Droid サンプル内でも試しましたhttps://github.com/slodge/MvvmCross-Tutorials/tree/master/ValueConversion

この中で、表示されたビューを https://github.com/slodge/MvvmCross-Tutorials/blob/master/ValueConversion/ValueConversion.UI.Droid/Resources/Layout/View_Visibility.axml に変更しLinearLayoutまし

このサンプルはうまくいきました:

ビスコンブ


とはWaitingForConfirmation? これは bool であると思われます。その場合、Windows バインドの場合と同様に、可視性コンバーターを使用する必要があります。Visibility プラグインには標準の可視性コンバーターが用意されており、次のように使用できます。

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="200dp"
    android:background="#ff0000"
    local:MvxBind="Visibility MakeItVisible, Converter=Visibility" />

最後に 1 つ: MvvmCrossは引き続きバインディング タイプの変換を適応boolさせます (そしてうまくいけば改善します)。Visibility enumsバインド操作を制御するには、値コンバーターを使用することをお勧めします (Windows の場合と同様)。

于 2013-09-20T10:55:36.883 に答える