Xamarin值转换器不适用于数据类型MvxColor和MvxVisibility

时间:2016-03-15 12:47:56

标签: xamarin xamarin.ios xamarin.android mvvmcross

我正在尝试使用MvxValueConverter为Android和iOS实现转换器。我能够使用我的converter绑定一个字符串值。但是如果我尝试使用相同的转换器绑定颜色(MvxColor)或可见性(MvxVisibility),它就不起作用。

pulic class TwoWayConverter : MvxValueConverter<string, MvxColor>
{
    protected override MvxColor Covert (string value, Type targetType, object parameter, CaultureInfo culture ) 
    {
        return new MvxColor (255,42,0);
    }
}

结合:

<TextView local:MvxBind="TextColor color, Converter=TwoWay" />

1 个答案:

答案 0 :(得分:0)

TextColorBackgroundColor绑定目标未内置到MvvMCross核心库中。它们是Color插件的一部分:https://github.com/MvvmCross/MvvmCross-Plugins/blob/master/Color/Readme.md

您可以通过在NuGet包管理器中搜索 MvvmCross.Plugin.Color 或通过

从命令行安装它来使用NuGet安装此插件
Install-Package MvvmCross.Plugin.Color

此插件还提供了将字符串转换为颜色的转换器(例如MvxRGBAValueConverter):

查看

<?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">
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Colored Text"
        local:MvxBind="TextColor Color, Converter=RGBA"/>

    <EditText
        local:MvxBind="Text Color"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>
</LinearLayout>

<强>视图模型

public class FirstViewModel : MvxViewModel
{
    private string color = "FF00FF";
    public string Color
    {
        get { return color; }
        set { SetProperty(ref color, value); }
    }
}

有关详情,请参阅:https://github.com/MvvmCross/MvvmCross/wiki/Value-Converters#the-mvx-color-valueconverters