2017-01-15 8 views
0

솔루션에 두 개의 프로젝트가 있습니다. 하나는 라이브러리 프로젝트이고 이후 하나는 응용 프로그램의 기본 프로젝트입니다.xamarin 형식 : 사용자 정의 렌더러가 실행되지 않는 경우 공유 라이브러리의 사용자 정의 컨트롤

라이브러리 프로젝트에는 공유 라이브러리 프로젝트, Android 및 iOS (애플리케이션의 기본 프로젝트와 유사)가 포함되어 있습니다.

라이브러리 프로젝트에는 재사용 할 수있는 모든 공통 코드가 있습니다.

공유 라이브러리 내부의 라이브러리 프로젝트에는 StackLayout을 확장하는 사용자 정의 컨트롤이 있고 특정 플랫폼에는 사용자 정의 컨트롤을 확장하는 렌더러가 있습니다.

모든 코드를 응용 프로그램의 기본 프로젝트에 넣으면 렌더러는 내가 컨트롤을 위해 작성한 터치 이벤트를 호출하고 수행 할 수있었습니다. 반면에, 코드가 라이브러리 프로젝트로 옮겨 졌다면, 안드로이드 파트로 작성된 렌더러가 호출을받지 못했을 때 컨트롤에 더 이상 터치 이벤트가 발생하지 않습니다.

렌더러를 호출하는 방법을 아는 사람이 있습니까?

당신은 어쩌면 당신은 잘못 클래스를 확장하는
#if __IOS__ 
    //your ios specific code 
#endif 
#if __ANDROID__ 
    //your android specific code 
#endif 

같은 처리기 지시문을 사용하지 않는 한 당신은 당신이 당신의 코드를 게시 할 경우 우리가 더 도움이 될 수 있습니다, 공유 코드에서 사용자 정의 렌더러를 쓸 수 없습니다

답변

1

; 예를 들어 내가 Xamarin.Forms.Platform.Android.NavigationRenderer을 확장 및 방법을 OnLayout 오버라이드 (override) 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