2016-08-01 11 views
5

Mam ControlTemplate zdefiniowane w App.xaml. Teraz muszę obsługiwać niektóre zdarzenia interfejsu użytkownika. W edytorze XAML programu Visual Studio, jeśli dołączę procedurę obsługi do zdarzenia, procedura obsługi jest tworzona w pliku App.xaml.cs. Jednak muszę to zrobić na stronach, które korzystają z tego szablonu kontroli.Jak uzyskać dostęp do elementów ControlTemplate w Xamarin Forms

Myślę, że jedynym sposobem jest powtórzenie elementów w szablonie kontrolnym i znalezienie odpowiedniego elementu i utworzenie procedur obsługi na stronach. Jednak nie jestem pewien, jak uzyskać dostęp do elementów z obiektu ControlTemplate.

Czy Xamarin zapewnia sposób podglądania zawartości ControlTemplate?

Odpowiedz

1

Nie znalazłem jeszcze sposobu na iterację po szablonie kontroli dzieci. Użyłem szablonu wiążącego https://developer.xamarin.com/guides/xamarin-forms/templates/control-templates/template-binding/ do powiązania z obiektem polecenia, właściwości dla poleceń są zdefiniowane na mojej stronie bazowej, a następnie wykorzystałem widok podstawowy do zdefiniowania moich poleceń i ustawienia ich na właściwości wiązania wiązania na stronie głównej Zastąpienie OnAppearing.

Pracuję nad wpisem na blogu i zaktualizuję to, gdy będę mieć kod do wyświetlenia.

+0

Wielkiego. Z góry dziękuję. – Mark13426

+1

Czy miałeś czas na napisanie wpisu na blogu, aby móc opublikować jakiś kod? – testing

1

Jeśli masz Page instancji można oddać go do IPageController i to InternalChildren nieruchomość zawiera elementy sterujące z szablonu.

Oto metoda rozszerzenie używam na znalezienie elementów sterujących wg nazwy

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

Czy elementy szablonu są tylko do odczytu, czy też można je modyfikować? – jbyrd

Powiązane problemy