我想为 android 创建一个经典的 BooleanToVisibilityConverter,我遵循这个https://github.com/slodge/NPlus1DaysOfMvvmCross/tree/master/N-04-ValueConverters,但在这个示例中,所有转换器都在核心项目中。我在 Droid 项目中创建了我的转换器并且不起作用。
我的 ValueConverter 代码:
public class BoolToVisibilityValueConverter : MvxValueConverter<bool, ViewStates>
{
protected override ViewStates Convert(bool value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value == true)
{
return ViewStates.Visible;
}
else
{
return ViewStates.Gone;
}
}
protected override bool ConvertBack(ViewStates value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value == ViewStates.Gone)
{
return false;
}
else if (value == ViewStates.Invisible)
{
return false;
}
else
{
return true;
}
}
}
还有我使用这个转换器的布局。
<?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-auto"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ffffff">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
local:MvxBind="Text Message" />
<ProgressBar
android:layout_width="100dp"
android:layout_height="100dp"
android:indeterminate="true"
android:layout_gravity="bottom|center_horizontal"
local:MvxBind="Visibility ProgressBarVisibility,Converter=BoolToVisibility" />
</LinearLayout>
谢谢!
编辑:
调试跟踪。
09-26 16:11:34.300 I/mono-stdout(18362): 参数名称: 值 09-26 16:11:34.300 I/mono-stdout(18362): at (wrapper managed-to-native) System.Enum :ToObject (System.Type,object) [0:] MvxBind:Error: 99.25 在对可见性的绑定执行期间看到的问题 - 问题 ArgumentException: 传入的值必须是枚举基础或枚举的基础类型,例如诠释32。参数名称:Cirrious.MvvmCross.Binding.ExtensionMethods.MvxTypeExtensions.MakeSafeValue(System.Type propertyType,System.Object 值)处(包装器托管到本机) System.Enum:ToObject (System.Type,object) 处的值 [0x00000 ] 在 Cirrious.MvvmCross.Binding.Bindings.Target.MvxPropertyInfoTargetBinding.MakeSafeValue (System.Object 值) 的 :0 [0x00000] 在 Cirrious.MvvmCross.Binding.Bindings.Target.MvxPropertyInfoTargetBinding.SetValue 的 :0 (System.