1

我正在尝试根据 ViewModel 状态绑定 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->Visibility枚举 - 所以代码也应该适用于此......


更新:我也在 Droid 示例中尝试过https://github.com/slodge/MvvmCross-Tutorials/tree/master/ValueConversion

在此我只是将显示的视图更改LinearLayouthttps://github.com/slodge/MvvmCross-Tutorials/blob/master/ValueConversion/ValueConversion.UI.Droid/Resources/Layout/View_Visibility.axml

此示例运行良好:

粘稠度


是什么WaitingForConfirmation?我怀疑这是一个布尔值,在这种情况下,您将需要使用可见性转换器,就像在 Windows 绑定中一样。Visibility 插件中提供了一个标准的可见性转换器,可以使用:

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

最后一点:MvvmCross 确实会继续适应(并希望改进)它的绑定类型转换——所以在某些时候你可能能够摆脱使用bools with Visibility enums——但这可能永远不会被推荐的做法——通常它是最好使用值转换器来控制您的绑定操作(就像在 Windows 中一样)。

于 2013-09-20T10:55:36.883 回答