【问题标题】:Xamarin Android Native: Cannot get MvvmCross Color plugin to workXamarin Android Native:无法使 MvvmCross Color 插件工作
【发布时间】:2018-01-19 12:43:30
【问题描述】:

我有一个定义了自定义模板的 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 属性我尝试拥有的字符串 这是我最后一次尝试的最“复杂”的版本(HexColor 是我的自定义 ValueConverter)。因为之前有 20 种不同的,但没有一个有效。颜色是我试过Color(Color)和NativeColor(Color)(根据this),没有转换器,还有backgroundBackgroundbackgroundColor,但没有任何帮助。 我还检查了,看起来插件为 Color 设置得很好。

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

【问题讨论】:

    标签: android xamarin data-binding mvvmcross


    【解决方案1】:

    为了使 Color 插件正常工作,请确保您的原生项目的 Bootstrap 文件夹中有 Bootstrap 类 ColorPluginBootstrap

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

    如果您的设置正确,那么您可以根据MvxColorValueConverter&lt;T&gt; 制作自己的颜色转换器,例如:

    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)">
    

    如果您只想将 ViewModel 的 MvxColor 绑定到您的 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

    【讨论】:

    • 嗨!所以,这实际上是我问题的核心。我已经使用BackgroundColor NativeColor(MyMvxColorProperty),但它对我不起作用。 NativeColor 转换器是否存在开箱即用,或者这是我必须自己创建的? (是的,我肯定安装了MvxPluginBootstrapAction)。
    • 它应该开箱即用,检查输出是否有任何消息/警告/错误 mvx 使用该转换器的绑定抛出,即使很明显检查您绑定的颜色不是与父视图的背景颜色相同。顺便说一句,您使用的是哪个版本的 mvx?
    猜你喜欢
    • 1970-01-01
    • 2017-04-12
    • 1970-01-01
    • 2020-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-07
    • 1970-01-01
    相关资源
    最近更新 更多