如何绑定TextView的TextColor?

Dav*_*isk 3 android mvvmcross xamarin

我试图在Android中绑定TextView的文本颜色.这是我的(截断的)xaml:

<TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:MvxBind=" TextColor CategoryTextColor(Category)"/>
Run Code Online (Sandbox Code Playgroud)

其中CategoryTextColorValueConverter如下:

public class CategoryTextColorConverter : MvxValueConverter<ShowCategory, Color>
{
    protected override Color Convert (ShowCategory value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (value == ShowCategory.AllShows)
        {
            return Color.Blue;
        }
        return Color.Red;
    }
}
Run Code Online (Sandbox Code Playgroud)

调用转换器并按预期返回颜色,但文本颜色在TextView上永远不会更改.我有一个类似的背景颜色绑定工作正常.我在这里看到在MvvmCross中我如何做自定义绑定属性,也许我需要创建自定义绑定,但我找不到MvxBaseAndroidTargetBinding.也许我需要从nuget安装一个单独的包?

Sve*_*übe 8

你唯一需要做的就是安装MvvMCross Color Plugin,因为TextColor它附带了它.它不包含在Core中.您发布的解决方案有效

请参阅:https://github.com/MvvmCross/MvvmCross/wiki/MvvmCross-plugins#color

提示:您不必编写特定于平台的ValueConvertes,如果使用MvxColorValueConverter<ShowCategory>,您可以跨不同平台共享它.

public class CategoryTextColorConverter : MvxColorValueConverter<ShowCategory>
{
    protected override MvxColor Convert(ShowCategory value, object parameter, CultureInfo culture)
    {
        if (value == ShowCategory.AllShows)
        {
            return MvxColors.Blue;
        }
        return MvxColors.Red;
    }
}
Run Code Online (Sandbox Code Playgroud)