この Q&A で回答された問題は、列挙型プロパティなどを持つ ViewModel がある場合に、mvvmcross を使用して UI プロジェクトに色を表示する方法であり、Color プロパティは必要なく、プラットフォームごとに ValueConverter も必要ありません。
質問する
2130 次
1 に答える
7
このようなビューモデルがあるとします
public enum MyEnum
{
Value1,
Value2
}
public class MyViewModel : MvxViewModel
{
public MyEnum MyEnumProp { get... set...}
}
Value1 に Azure Color を、Value2 に Black を表示したい場合、このコンバーターを Core プロジェクトに実装できます。
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 に追加することを忘れないでください (自動的に Bootstrap フォルダーに追加されるカラー プラグイン Nuget パッケージを追加する場合は必要ありません)。
Cirrious.MvvmCross.Plugins.Color.PluginLoader.Instance.EnsureLoaded();
于 2013-04-08T10:44:47.953 に答える