2016-09-30 1 views
0

上で実行されます。コードは、私はこのコードを持っている私のViewControllersのいずれかの結合ではシミュレータ上ではなく、デバイス

これは、コンバータのコードです:

public class DateFilterButtonStateToTintColourConverter : MvxValueConverter<bool, UIColor> 
{ 
    protected override UIColor Convert(bool value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return value ? ColourPalette.Orange : ColourPalette.Blue; 
    } 
} 

今、奇妙なことは、私はシミュレータ上でこれを実行すると、私は結合作品ということを見ることができるということです、HasDateSelectedプロパティにアクセスするとConvert方法コンバータ実行のために。

しかし、私はデバイスに展開すると、まったく動作しません。実際、デバイスをデバッグすると、コードは実行されず、ブレークポイントもヒットしません。

+0

おそらくリンクの問題です。 LinkerPleaseInclude.cs – Cheesebaron

+0

@Cheesebaronに追加のものを追加して、コードがリンクされていないことを確認してください。正確には、これは実際に私が持っていた別の問題を解決しました。私が受け入れることができるように答えとして追加してください。 –

答えて

2

これはリンクの問題です。通常、何かがデバッグモードでシミュレータ上で正常に動作し、実際のデバイスでは動作しないとき。 Linkingプロセスがコードの一部を取り除いたからでしょう。

これは、MvvmCrossがバインディングに依存しているリフレクションによってコードが使用されていることをリンカが検出できないために発生します。

コードが実際に使用されていることをヒントするため、MvvmCrossにはLinkerPleaseInclude.csファイルが含まれています。ここには、コードの残りの部分で使用されることが予想されるコンストラクタ、メソッド、 。

したがって、上記のあなたのケースでは、DateSelectBarItemにはバインディングで使用しているTintColorというプロパティがあります。 LinkerPleaseInclude.csファイルにリンカにヒントを追加する例は次のようになります。

public void Include(BarItem item) 
{ 
    item.TintColor = Color.Red; 
} 

これはTintColorを維持するために、リンカをヒントに十分でなければなりません。コンストラクタやメソッドでも同様のことができます。

関連する問題