6

Trong một câu hỏi/câu trả lời trước tôi học được cách liên kết dữ liệu trong Windows Phone không TypeConversion cho string-ImageSource sử dụng TypeConverterAttribute - xem https://stackoverflow.com/a/16753488/373321Làm thế nào để không Windows RT dữ liệu ràng buộc làm loại chuyển đổi mà không TypeConverterAttribute

Tôi bây giờ xem cùng một vấn đề trong các ứng dụng WindowsStore nơi TypeConverterAttributedoesn't exist.

Nếu tôi sử dụng liên kết dữ liệu WinRT thì rõ ràng lớp ràng buộc dữ liệu vẫn quản lý để thực hiện chuyển đổi chính xác. MSDN documentation nói:

hành vi này dựa vào chuyển đổi loại cơ bản xử lý chuỗi dưới dạng URI và gọi tương đương với hàm tạo bitmapImage (Uri).

Tuy nhiên, tôi không thể thấy bất kỳ siêu dữ liệu nào ở bất kỳ nơi nào về cách thức hoạt động của chuyển đổi.

Tôi đang cố gắng xây dựng triển khai ràng buộc dữ liệu của riêng mình - để có thể bắt chước những gì WinRT thực hiện sẽ rất hữu ích.

Có gợi ý siêu dữ liệu có thể truy vấn ở đâu đó cho biết ràng buộc dữ liệu Xaml có áp dụng chuyển đổi nào không? Hay đây là chuyển đổi string sang ImageSource bằng cách nào đó được nướng vào thời gian chạy, ẩn khỏi lớp CLR?

Nếu bị ẩn, có danh sách ở bất kỳ nơi nào có chuyển đổi loại tự động đã biết để tôi có thể lưu chúng trong triển khai ràng buộc dữ liệu không?

Trả lời

0

Trong ứng dụng Windows 8, điều này thường được xử lý bằng cách tạo lớp kế thừa từ IValueConverter và sau đó được gán cùng với ràng buộc dữ liệu cụ thể. Như đã nêu trên trang msdn:

"Tạo trình chuyển đổi bằng cách triển khai giao diện IValueConverter và thực hiện phương thức Chuyển đổi. Phương thức đó sẽ trả về một đối tượng là cùng một loại làm thuộc tính phụ thuộc của các mục tiêu ràng buộc hoặc tại ít nhất một loại có thể bị ép buộc hoặc chuyển đổi thành loại mục tiêu. "

Dưới đây là liên kết để toàn bộ doc: http://msdn.microsoft.com/en-US/library/windows/apps/windows.ui.xaml.data.binding.converter.aspx

Hãy xem phần "Ví dụ" để biết thêm chi tiết.

Để trả lời câu hỏi của bạn, không có gợi ý siêu dữ liệu, bạn chỉ cần tạo trình chuyển đổi và sau đó chỉ định rõ ràng trình chuyển đổi cùng với ràng buộc dữ liệu tùy chỉnh của bạn.

2

Tôi đã thảo luận vấn đề này thông qua Twitter với một trong những nhà phát triển WinRT (Tim Heuer)

Một bản tóm tắt cơ bản về cuộc trò chuyện này là:

  • WinRT không có bất cứ điều gì như TypeConverterAttribute
  • Một nhỏ số lượng điều khiển WinRT có số lượng chuyển đổi nội bộ nhỏ mà họ sẽ áp dụng
  • Không có sẵn thông tin công khai về các kiểm soát và chuyển đổi nào là
+1

Ah, có một chút thất vọng khi nghe.Tôi đã làm việc trên một usercontrol, và việc thiếu điều này làm tê liệt việc sử dụng nó trong XAML. – unrelativity