2016-08-01 34 views
5

Tôi có một ControlTemplate được định nghĩa trong App.xaml. Bây giờ, tôi cần để có thể xử lý các sự kiện giao diện người dùng nhất định. Trong trình soạn thảo XAML của Visual Studio, nếu tôi đính kèm một trình xử lý cho một sự kiện, trình xử lý được tạo trong App.xaml.cs. Tuy nhiên, tôi cần phải làm điều này trong các trang sử dụng mẫu điều khiển này.Cách truy cập các phần tử của một ControlTemplate ở dạng Xamarin

Tôi nghĩ cách duy nhất là lặp qua các phần tử trong mẫu điều khiển và tìm phần tử phù hợp và tạo trình xử lý trong các trang. Tuy nhiên, tôi không chắc chắn làm thế nào để truy cập các phần tử từ đối tượng ControlTemplate.

Xamarin có cung cấp cách xem nhanh nội dung của ControlTemplate không?

Trả lời

1

Tôi chưa tìm thấy cách nào để lặp lại thông qua mẫu kiểm soát trẻ em. Tôi đã sử dụng mẫu đính kèm https://developer.xamarin.com/guides/xamarin-forms/templates/control-templates/template-binding/ để liên kết với đối tượng lệnh, thuộc tính cho lệnh được xác định trong trang cơ sở của tôi, sau đó sử dụng chế độ xem cơ sở để xác định lệnh của tôi và đặt chúng vào thuộc tính sao lưu ràng buộc trong ghi đè OnAppearing.

Tôi đang làm việc trên một mục nhập blog và sẽ cập nhật điều này khi tôi có mã để hiển thị.

+0

vĩ đại. Cảm ơn trước. – Mark13426

+1

Bạn có thời gian để viết bài viết blog để bạn có thể đăng một số mã không? – testing

1

Nếu bạn có Trang dụ bạn có thể bỏ nó vào IPageController và nó InternalChildren tài sản chứa các điều khiển từ mẫu.

Dưới đây là một phương pháp mở rộng Tôi đang sử dụng để tìm điều khiển theo tên

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

Các phần tử mẫu có chỉ đọc hay bạn có thể sửa đổi chúng không? – jbyrd

Các vấn đề liên quan