gpt4 book ai didi

xamarin.ios - 在 MvvmCross 上为多个平台共享颜色转换器 (mvvmcross v3)

转载 作者:行者123 更新时间:2023-12-04 16:04:31 26 4
gpt4 key购买 nike

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

最佳答案

假设你有这样一个 View 模型

public enum MyEnum
{
Value1,
Value2
}
public class MyViewModel : MvxViewModel
{
public MyEnum MyEnumProp { get... set...}
}

假设您想为 Value1 显示 Azure 颜色并为 Value2 显示黑色,您可以在您的核心项目上实现此转换器。

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 文件夹,则不需要)。

Cirrious.MvvmCross.Plugins.Color.PluginLoader.Instance.EnsureLoaded();

关于xamarin.ios - 在 MvvmCross 上为多个平台共享颜色转换器 (mvvmcross v3),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15877139/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com