2017-01-15 8 views
0

ソリューションに2つのプロジェクトがあります.1つはライブラリプロジェクトであり、後の1つはアプリケーションのメインプロジェクトです。xamarin形式:共有ライブラリのカスタムコントロールの場合、カスタムレンダラーは実行されません

ライブラリプロジェクトには、共有ライブラリプロジェクト、アンドロイド、およびアプリケーションのメインプロジェクトと同様のiOSが含まれています。

ライブラリプロジェクトには、再利用できるすべての共通コードが含まれています。

共有ライブラリ内のライブラリプロジェクトでは、StackLayoutを拡張するカスタムコントロールがあり、プラットフォーム固有のカスタムコントロールをレンダリングするレンダラーがあります。

アプリケーションのメインプロジェクトにすべてのコードを追加すると、レンダラーは私がコントロール用に書いたタッチイベントを呼び出して実行することができました。一方、コードがライブラリプロジェクトに移動された場合、アンドロイドパーツで書かれたレンダラーが呼び出されなかったため、コントロールはもはやタッチイベントを持っていません。

どのように私はレンダラーを呼び出すことができます知っている?

答えて

1

あなたは私たちがよりよく助けることができるあなたのコードを投稿した場合

#if __IOS__ 
    //your ios specific code 
#endif 
#if __ANDROID__ 
    //your android specific code 
#endif 

のようなプリプロセッサディレクティブは、たぶん、あなたは、間違ったクラスを拡張している使用しない限り、あなたは共有コードでカスタムレンダラを書くことはできません。例えば私はXamarin.Forms.Platform.Android.NavigationRendererを拡張し、メソッドをオーバーライドしOnLayout havetoこの

public class CustomNavigationRenderer : NavigationRenderer 
{ 
    protected override void OnLayout(bool changed, int l, int t, int r, int b) 
    { 
     base.OnLayout(changed, l, t, r, b); 
     //my own code 

のようなアンドロイドのナビゲーションバーの背景を変更するコードを書きました。あなたを助けることを願っています。

+0

Uが正しいです...代わりにPCLプロジェクトに入れて、今は問題ありません。 – LittleFunny

関連する問題