2
問題在此問題上回答A是我們如何使用mvvmcross在我們的UI項目上顯示顏色,例如,當我們有一個ViewModel,例如Enumeration Property時需要有一個Color屬性,並且每個平臺都沒有ValueConverter。在MvvmCross上共享多個平臺上的顏色轉換器(mvvmcross v3)
問題在此問題上回答A是我們如何使用mvvmcross在我們的UI項目上顯示顏色,例如,當我們有一個ViewModel,例如Enumeration Property時需要有一個Color屬性,並且每個平臺都沒有ValueConverter。在MvvmCross上共享多個平臺上的顏色轉換器(mvvmcross v3)
假設你有一個像這樣
public enum MyEnum
{
Value1,
Value2
}
public class MyViewModel : MvxViewModel
{
public MyEnum MyEnumProp { get... set...}
}
假設你想顯示Azure的顏色值1和黑色的值2視圖模型,你可以在你實現這個轉換器的核心工程。
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();