首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >多平台MvvmCross上的共享色彩转换器(mvvmcross v3)

多平台MvvmCross上的共享色彩转换器(mvvmcross v3)
EN

Stack Overflow用户
提问于 2013-04-08 18:44:48
回答 1查看 2.1K关注 0票数 2

在这个问答中回答的问题是,当我们有一个带有枚举属性的ViewModel时,我们如何使用mvvmcross在我们的UI项目上显示颜色,而不需要有颜色属性,并且没有每个平台的ValueConverter。

EN

回答 1

Stack Overflow用户

发布于 2013-04-08 18:44:48

假设您有一个视图模型,如下所示

代码语言:javascript
运行
复制
public enum MyEnum
{
   Value1,
   Value2
}
public class MyViewModel : MvxViewModel
{
   public MyEnum MyEnumProp { get... set...}
}

假设你想为Value1显示天青颜色,为Value2显示黑色,你可以在你的核心项目上实现这个转换器。

代码语言:javascript
运行
复制
public class MyEnumToColorConverter: MvxValueConverter<MyEnum, object>
{
    protected override object Convert (Multiplier value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        MvxColor mvxColor = null;
        switch (value) {
        case MyEnum.Value1:
            mvxColor = new MvxColor(240,255,255);
            break;
        case MyEnum.Value2:
            mvxColor = new MvxColor(0,0,0);
            break;
        default:
            mvxColor = new MvxColor(0,0,0);
            break;
        }

        var nativeColorConv = Mvx.Resolve<IMvxNativeColor>();

        return nativeColorConv.ToNative (mvxColor);
    }
}

诀窍是调用Mvx.Resolve<IMvxNativeColor>()。在您的UI项目中,如果您已经加载了正确的Color插件,那么您将自动获得适合您的平台的正确的Color实现。

记住将这一行添加到您的Setup.cs中(如果您添加了颜色插件Nuget包,则不需要,它会自动将其添加到Bootstrap文件夹中)。

代码语言:javascript
运行
复制
Cirrious.MvvmCross.Plugins.Color.PluginLoader.Instance.EnsureLoaded();
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15877139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档