2016-08-01 5 views
5

App.xaml에 정의 된 ControlTemplate이 있습니다. 이제 특정 UI 이벤트를 처리 할 수 ​​있어야합니다. Visual Studio의 XAML 편집기에서 이벤트에 처리기를 연결하면 처리기가 App.xaml.cs.에 만들어집니다. 그러나이 컨트롤 템플릿을 사용하는 페이지에서이 작업을 수행해야합니다.Xamarin Forms에서 ControlTemplate 요소에 액세스하는 방법

컨트롤 템플릿의 요소를 반복하고 올바른 요소를 찾고 페이지에서 처리기를 만드는 것이 유일한 방법이라고 생각합니다. 그러나 ControlTemplate 개체에서 요소에 액세스하는 방법을 잘 모르겠습니다.

Xamarin은 ControlTemplate의 내용을 들여다 볼 수있는 방법을 제공합니까?

답변

1

제어 템플릿 하위를 반복하는 방법을 아직 찾지 못했습니다. 명령 개체에 바인딩하기 위해 템플릿 바인딩 https://developer.xamarin.com/guides/xamarin-forms/templates/control-templates/template-binding/ 을 사용하고 명령의 속성을 내 기본 페이지에 정의한 다음 기본보기를 사용하여 내 명령을 정의하고이를 기본 페이지 OnAppearing 재정의의 바인딩 백킹 속성으로 설정했습니다.

블로그 항목을 작성 중이며 표시 할 코드가있을 때이를 업데이트합니다.

+0

위대한 이름으로 내가 컨트롤을 찾기 위해 사용하고 확장 방법이다. 미리 감사드립니다. – Mark13426

+1

블로그 코드를 게시 할 수 있도록 블로그 항목을 작성하는 시간이 있었습니까? – testing

1

당신이 페이지 인스턴스가있는 경우에 당신은 IPageController에 캐스팅 수 있으며 속성은 템플릿에서 컨트롤이 포함 InternalChildren입니다. 여기

public static T FindTemplateElementByName<T> (this Page page, string name) 
    where T: Element 
{ 
    var pc = page as IPageController; 
    if (pc == null) 
    { 
     return null; 
    } 

    foreach (var child in pc.InternalChildren) 
    { 
     var result = child.FindByName<T> (name); 
     if (result != null) 
     { 
      return result; 
     } 
    } 

    return null; 
} 
+0

템플릿 요소가 읽기 전용입니까, 아니면 수정할 수 있습니까? – jbyrd

관련 문제