2016-05-23 25 views
21

Điều gì sẽ sử dụng trong UWP, Binding hoặc x:Bind và sự khác biệt giữa chúng là gì?Sự khác biệt giữa Ràng buộc và x: Ràng buộc

Vì tôi thấy nhiều bài đăng mà mọi người sử dụng Binding và tôi chỉ liên kết với x:Bind trong UWP.

Tại trang chủ MSDN, nó chỉ nói rằng "các đối tượng liên kết được tạo bởi {x:Bind}{Binding} phần lớn là có chức năng tương đương." và rằng x:Bindnhanh hơn.

Nhưng sự khác nhau giữa chúng là gì?

Bởi vì "phần lớn có chức năng tương đương" không có nghĩa là tương đương.

Link từ Quote tôi: MSDN

Vì vậy, câu hỏi của tôi là: Ràng buộc trong UWP:

sự khác biệt trong sử dụng x Binding hay là gì?

+2

Có thể cho rằng sự khác biệt đáng kể nhất là (như đã nêu trong phần mở rộng đánh dấu [{x: Bind}] (https://msdn.microsoft.com/en-us/windows/uwp/xaml-platform/x-bind- markup-extension)): * "Các kết buộc biên dịch được đánh máy mạnh và sẽ giải quyết loại mỗi bước trong một đường dẫn. Nếu kiểu trả về không có thành viên, ** nó sẽ thất bại trong thời gian biên dịch **." * – IInspectable

Trả lời

27

Sau đây có lẽ là chưa hoàn chỉnh, nhưng một số khác biệt chính là

  • Cũ phong cách {Binding }

    • liên kết với DataContext
    • liên kết với một tên tài sản, linh hoạt về loại nguồn thực tế


  • phong cách mới {x:Bind }
    • liên kết với các yếu tố Framework (code-behind lớp)
    • nhu cầu tất cả các loại cố định tại thời gian biên dịch
    • mặc định là chế độ OneTime tằn tiện hơn

starting with build 14393, {x:Bind } hỗ trợ:

  • BooleanToVisibility trực tiếp ràng buộc, mà không có một ValueConverter
  • mở rộng ràng buộc Function
  • đúc
  • indexers điển

Các mới hơn {x: Bind} là một nhanh hơn một chút trong thời gian chạy nhưng cũng quan trọng như vậy nó sẽ cung cấp cho các lỗi trình biên dịch cho các ràng buộc sai lầm. Với {Binding}, bạn sẽ chỉ thấy một Điều khiển trống trong hầu hết các trường hợp.

6

{x:Bind} thực thi mã có mục đích đặc biệt, được tạo tại thời điểm biên dịch. {Binding} sử dụng kiểm tra đối tượng thời gian chạy chung. Do đó, {x:Bind} có hiệu suất tuyệt vời và cung cấp xác nhận thời gian biên dịch các biểu thức ràng buộc của bạn. Nó hỗ trợ gỡ lỗi bằng cách cho phép bạn thiết lập các điểm ngắt trong các tệp mã được tạo ra như là một phần lớp cho trang của bạn.

{x:Bind} sử dụng mã được tạo để đạt được các lợi ích của nó, nó yêu cầu thông tin loại tại thời gian biên dịch. Điều này có nghĩa là bạn không thể liên kết với các thuộc tính mà bạn không biết loại trước. Bởi vì điều này, bạn không thể sử dụng {x:Bind} với thuộc tính DataContext thuộc loại Object và cũng có thể thay đổi vào thời gian chạy. Phần mở rộng đánh dấu {x:Bind} — mới cho Windows 10 — là một thay thế cho {Binding}. {x:Bind} thiếu một số tính năng của {Binding}, nhưng nó chạy trong thời gian ít hơn và ít bộ nhớ hơn {Binding} và hỗ trợ gỡ lỗi tốt hơn.

+2

Bạn có thể thêm nguồn bạn đang trích dẫn không? –

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