Xamarin Android Native:无法获得MvvmCross Color插件

时间:2018-01-19 12:43:30

标签: android xamarin data-binding mvvmcross

我有一个定义了自定义模板的MvxListView。一般情况下,绑定效果很好。我看到标签绑定了。但绑定时不是BackgroundColor属性:

        <LinearLayout
              android:orientation="vertical"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              local:MvxBind="Text Name;BackgroundColor 
              NativeColor(HexColor(Color))">

我尝试使用Color属性作为stringn 这是最复杂的&#34;版本我尝试了最后一个(HexColor是我的自定义ValueConverter)。因为之前有20个不同的,但没有一个工作。颜色是我尝试Color(Color)和NativeColor(颜色)(相应于this),没有转换器,backgroundBackgroundbackgroundColor,但没有帮助。 我也检查过,看起来插件设置好了Color。

那么,有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:1)

为了使Color插件正常工作,请确保在本机项目的ColorPluginBootstrap文件夹中包含Bootstrap类Bootstrap

using MvvmCross.Platform.Plugins;

namespace MyProject.Mobile.Droid.Bootstrap
{
    public class ColorPluginBootstrap
        : MvxPluginBootstrapAction<MvvmCross.Plugins.Color.PluginLoader>
    {
    }
}

如果你有正确的设置,那么你可以根据MvxColorValueConverter<T>制作自己的颜色转换器,例如:

public class BooleanToBicolorConverter : MvxColorValueConverter<bool>
{
    protected override MvxColor Convert (bool value, object parameter, System.Globalization.CultureInfo culture)
    {
        // returns gray or white depending whether value is true or false.
        return value ? new MvxColor (215, 215, 215) : new MvxColor (255, 255, 255);
    }
}

你这样使用它:

<LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    local:MvxBind="Text Name; BackgroundColor BooleanToBicolor(MyBoolProperty)">

如果您想将MvxColor ViewModel绑定到View,可以使用MvxNativeColorValueConverter,如下所示:

<LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    local:MvxBind="Text Name; BackgroundColor NativeColor(MyMvxColorProperty)">

您可以找到其他Mvx基色转换器here

HIH