绑定 MvvmCross TextColor 不适用于 Android

叶夫根尼K

我收到以下警告:

  • [WARN] (MvxBind) 无法为 MvxValueConverterValueCombiner 组合器操作创建绑定 TextColor 的目标绑定

绑定代码:

<TextView 
            android:id="@+id/text_view_header"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="4dp"
            style="@style/text_group_header"
            app:MvxBind="Text DisplayHeader; TextColor AppointmentFeedHeaderGroupColor(StartTime)"
        />

AppointmentFeedHeaderGroupColorValueConverter.cs

public class AppointmentFeedHeaderGroupColorValueConverter: MvxValueConverter<DateTime, Color>
    {
        private static readonly IDateTimeService DateTimeService = Mvx.Resolve<IDateTimeService>();
        private static readonly Color HeaderGroupBlack = GetColor(Resource.Color.black);
        private static readonly Color HeaderGroupRedLight = GetColor(Resource.Color.red_light);

        protected override Color Convert(DateTime value, Type targetType, object parameter, CultureInfo culture)
        {
            if (value != DateTimeService.Now.Date)
            {
                return HeaderGroupRedLight;
            }

            return HeaderGroupBlack;
        }

        private static Color GetColor(int resourceColorId)
        {
            var context = Mvx.Resolve<IMvxAndroidCurrentTopActivity>().Activity;

            return new Color(ContextCompat.GetColor(context, resourceColorId));
        }
    }

我在文件 LinkerPleaseInclude.cs 中添加了以下代码。

public void Include(TextView text)
{
    text.AfterTextChanged += (sender, args) => text.Text = "" + text.Text;
    text.Hint = "" + text.Hint;

    text.SetTextColor(Color.Black);
    var tc = text.TextColors;
    text.SetTextColor(tc);
} 

它没有帮助

通心粉

首先,检查MvvmCross.Plugin.Color您的Android项目和PCL/NetStandard项目中是否都安装

然后您的转换器应该在您的 PCL/NetStandard 项目中并从中继承,MvxColorValueConverter<DateTime>以便您的颜色不依赖于您的平台:

public class AppointmentFeedHeaderGroupColorValueConverter: MvxColorValueConverter<DateTime>
{
    private static readonly IDateTimeService DateTimeService = Mvx.Resolve<IDateTimeService>();
    private static readonly MvxColor HeaderGroupBlack = new MvxColor(0,0,0);
    private static readonly MvxColor HeaderGroupRedLight = new MvxColor(255,0,0); // red_light, should see how to convert this to RGB values

    protected override MvxColor Convert(DateTime value, object parameter, CultureInfo culture)
    {
        if (value != DateTimeService.Now.Date)
        {
            return HeaderGroupRedLight;
        }

        return HeaderGroupBlack;
    }
}

最后,像您目前所做的那样使用颜色转换器:

TextColor AppointmentFeedHeaderGroupColor(StartTime)

更多信息:

MvvmCross 颜色文档

MvvmCross.Plugin.Color.MvxColorValueConverter.cs

在这里,您拥有MvvmCross提供的完整LinkerPleaseInclude文件。

HIH

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MvvmCross Android 绑定启用不适用于 Click

来自分类Dev

Mvvmcross:无法创建用于绑定TextColor的目标绑定

来自分类Dev

Android数据绑定不适用于<merge>属性

来自分类Dev

Xamarin 表单按钮 IsVisible 绑定不适用于 Android

来自分类Dev

ViewModel和View之间的MvvmCross绑定不适用于按钮

来自分类Dev

MvvmCross Android绑定代码

来自分类Dev

MvvmCross绑定+ Android EventHandler

来自分类Dev

MvvmCross Android绑定代码

来自分类Dev

Android数据绑定不适用于View'android:tag'属性

来自分类Dev

Android数据绑定库不适用于最新的Gradle版本

来自分类Dev

适用于android adb的python绑定

来自分类Dev

适用于Android的OpenCL Java绑定

来自分类Dev

适用于android adb的python绑定

来自分类Dev

适用于Android SDK的Xamarin绑定

来自分类Dev

使用 MvvmCross 绑定 Android 服务

来自分类Dev

Xamarin绑定不适用于ListView

来自分类Dev

WPF绑定不适用于类

来自分类Dev

绑定不适用于ViewModel

来自分类Dev

WPF 绑定不适用于 ItemsControl

来自分类Dev

绑定不适用于用户实例

来自分类Dev

MvvmCross SQLite 插件不适用于 UWP 项目

来自分类Dev

MVVMCross Android:绑定值未更新

来自分类Dev

将Android按钮的Enabled属性与MvvmCross绑定

来自分类Dev

如何使用MVVMCross绑定Android RadioGroup的RadioButton

来自分类Dev

MvvmCross Checkbox绑定到命令android xml

来自分类Dev

Xamarin中的Android ExpandableListView,可与MvvmCross绑定

来自分类Dev

MvvMCross绑定到Android布局中的<include>

来自分类Dev

MvvmCross Android:屏幕旋转后绑定丢失

来自分类Dev

onCheckedChangeListener不适用于Android Studio