MvvmCrossで値コンバータを使用してiOSラベルのテキストの色を変更しようとしています。ここでは、コードの少しは(これは、コア事業である)です。Xamarin MvvmCross iOS Bool to Color ValueConverterラベルテキストの色が変更されない
public class BoolToColorValueConverter
: MvxValueConverter<bool, object>
{
protected override object Convert(bool value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
MvxColor mvxColor = null;
if(value)
mvxColor = new MvxColor(255, 0, 0);
else
mvxColor = new MvxColor(0, 0, 0);
var nativeColorConv = Mvx.Resolve<IMvxNativeColor>();
return nativeColorConv.ToNative(mvxColor);
}
}
そして、私の結合に:
this.CreateBinding(LabelName).For(s => s.TextColor).To((MyViewModel vm) => vm.BooleanPropertyThatChangesAtSomePoint).WithConversion("BoolToColor").Apply();
しかし、真から偽のブールプロパティの変更何らかの理由そのプロパティに正しくバインドされている他のフィールドは正しく表示されますが、ラベルのテキストの色は表示されません。
@slodgeのビデオ、チュートリアル、ダウンロードされたgitの例を見たことがありますが、まだこれを動作させることはできません。私はブレークポイントを入れてコンバータが起動されているので、コンバータが適切な値を返さないことと関係していると思います。何か案は?コードのその部分は、アプリ内のTextColor
への参照のみである場合LinkerBehaviour
がLink SDK assemblies only
またはLink all assemblies
に設定されている場合
おかげでルークと編集のための感謝:
カラープラグインは、あなたの色変換を行うために、より簡潔な方法をご提供し、あなたが
MvxColorValueConverter
にアクセスすることができます。私はMvxColorsプラグをインストールしています。私はLinkerPleaseIncludeのアプローチを得ていません。私は私のプロジェクトでそのクラスを見つけることができないので、手動で追加する必要があると思います。私はMvxColorValueConverterを使用してあなたのアプローチに従ったが、私はアプリケーションが起動するとエラーが発生します。私はあなたの提案を守り、それがどのように進むのかを教えてくれるでしょう。 – Ph0b0x実際には、MvxColorアプローチを使用していました。私はIOSプロジェクトでMvx Color Pluginを見逃していました。私はコアプロジェクトでそれを持っていましたが、IOSのものではありませんでした。ルークに感謝します。 – Ph0b0x
Mvxプラグインを使用する際の一般的な経験則は、コアプロジェクトとプラットフォームプロジェクトの両方にプラグインを追加することです。プラグインには通常、移植可能なインタフェースとプラットフォーム固有の実装があります。したがって、両方を追加することで、正しく動作することが保証されます。 – Kiliman