8

Khi chia sẻ mã giữa WinRT và WP8:Không gian tên nhóm XAML - sử dụng tính không tương thích?

WP8 muốn:

xmlns:vm="clr-namespace:MyApp.ViewModels" 

WinRT muốn:

xmlns:vm="using:MyApp.ViewModels" 

Điều này có nghĩa bạn không thể chia sẻ mã XAML - như điều khiển người dùng - giữa các dự án cách chúng ta có thể trong WP7, Silverlight, WPF

Có ai tìm thấy một công việc xung quanh không? XmlnsDefinition thuộc tính trông giống như nó có thể sửa lỗi này, nhưng MS lấy nó ra khỏi WinRT.

+0

Chỉ có thể chia sẻ XAML giữa WP7/SL/WPF bằng cách thực sự duy trì các bản sao riêng biệt của tệp XAML trong mỗi dự án, do đó, "chia sẻ" là một chút nhầm lẫn. Điều đó thực sự thay đổi một chút với sự ra đời của Portable Class Libraries, mặc dù bạn bị giới hạn làm việc với các kiểu và các phương thức đã có mặt trên tất cả các nền tảng đích. Trong trường hợp này, vì việc chia sẻ chỉ là sự đa dạng của "copy the text", bạn có thể tiếp tục làm điều đó (với ngoại lệ là bạn sẽ cần phải điều chỉnh "using" s cho WinRT.) – dlev

+0

Bạn không cần để sao chép các tệp, bạn chỉ có thể thêm chúng dưới dạng tệp được liên kết, do đó bạn chỉ phải duy trì một tệp. Với sự thay đổi này rõ ràng là không thể nữa. – Kenneth

+1

Trên thực tế, trong WP7/SL/WPF nếu bạn gắn bó với các điều khiển cơ bản, bạn có thể chia sẻ XAML. Bí quyết là đặt xaml chính của bạn trong usercontrols. Các usercontrols sau đó có thể được chia sẻ dưới dạng các liên kết trong mỗi dự án VS. Sau đó, xác định một trang hoặc cửa sổ hoặc bất cứ điều gì trong mỗi dự án kết hợp các usercontrol. – jlo

Trả lời

0

Tôi chỉ làm một chút trong Windows Phone 8 và mặc dù trình chỉnh sửa chuyển đổi theo mặc định thành clr-namespace bạn vẫn có thể thay đổi thành using và nó sẽ hoạt động.

1

Vấn đề này, cùng với các biện pháp khắc phục hạn chế, được giải thích một cách chi tiết ở đây: http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj714088(v=vs.105).aspx

  • XAML trên Windows Phone 8 và XAML trên Windows 8 không tương thích nhị phân. Như đã nêu trước đó, các điều khiển bạn sử dụng để xây dựng giao diện người dùng trên mỗi nền tảng là tương tự nhau. Chúng tương tự như tên, hành vi và giao diện lập trình hoặc cú pháp, chúng lộ ra. Tuy nhiên, chúng được triển khai cụ thể cho từng nền tảng.
  • Tiền tố không gian tên khác nhau trong XAML cho Windows Phone 8 và XAML cho Windows 8. Điều này được minh họa bằng cách xem các không gian tên được bao gồm trong trang cơ bản khi bạn tạo từ đầu. [...] So sánh các nhập khẩu không gian tên này, bạn có thể thấy sự tinh tế nhưng khác biệt đáng kể về cách nhập không gian tên. Trong Windows Điện thoại 8, các không gian tên đã nhập được đặt trước bằng không gian tên clr :. Trong Các không gian tên được nhập của Windows 8 được bắt đầu bằng cách sử dụng :. Điều này làm cho nó khó sử dụng cùng một XAML, trừ khi bạn có thể nhập không gian tên bằng cách sử dụng cùng một cú pháp.
  • XAML không hỗ trợ biên soạn có điều kiện. Là được trình bày trong biên dịch có điều kiện với các chỉ thị tiền xử lý, biên dịch có điều kiện là một kỹ thuật hữu ích để xử lý nền tảng khác nhau bằng cách biên dịch trong đường dẫn mã nhắm đến nền tảng cụ thể và một đường dẫn mã khác khi biên dịch cho nền tảng khác. Điều này gây khó khăn cho việc chia sẻ trang XAML giữa cả hai nền tảng, vì bạn không thể giải quyết vấn đề trước đó bằng cách đơn giản biên dịch nhập khẩu không gian tên sử dụng không gian tên clr cho Windows Điện thoại 8 và sử dụng: dành cho Windows 8.

này không nên được xem như là một rào cản hoàn chỉnh cho việc chia sẻ giữa Windows Phone 8 và Windows 8. các hướng dẫn rõ ràng là để thiết kế và xây dựng UI của bạn riêng cho từng nền tảng, ôm thiết kế hướng dẫn cho mỗi. Về mặt kỹ thuật, có thể phá vỡ những trở ngại này. Bạn có thể tạo giao diện người dùng trong khi khởi tạo trang từ mã . Bạn có thể tải XAML nền tảng cụ thể từ các tài nguyên tại thời gian chạy và tiêm nó dưới dạng một chuỗi vào trang.Tuy nhiên, không có quy mô kỹ thuật nào trong số những quy tắc kỹ thuật này và chúng tạo dựng tài sản cốt lõi của bạn — cách ứng dụng của bạn trông cho người dùng của bạn — một công việc tẻ nhạt và dễ bị lỗi. đang chia sẻ đầu tư của bạn sẽ cung cấp cho bạn một lợi nhuận lớn hơn nhiều hơn nữa xuống ngăn xếp ứng dụng của bạn, bằng cách cố gắng chia sẻ logic ứng dụng, các mô hình dữ liệu, viewmodels, , vv

[...] Một kỹ thuật để chia sẻ giao diện người dùng mà có thể được sử dụng trong một số trường hợp là cách ly các phần giao diện người dùng của bạn thành các điều khiển của người dùng và cố gắng chia sẻ những điều đó. [...] Tuy nhiên, do những hạn chế được gọi ra tại số bắt đầu của cuộc thảo luận này, kỹ thuật này được giới hạn cho người dùng cơ bản điều khiển. Ngoài những hạn chế đó, bạn nên xem xét nguyên tắc để luôn xây dựng trải nghiệm người dùng của mình cho phù hợp với nền tảng mục tiêu . Việc chia sẻ các điều khiển XAML là có thể nhưng có giới hạn. Một ứng cử viên tốt cho loại chia sẻ này là giao diện người dùng bạn muốn hiển thị trong cửa sổ bật lên hoặc các tiện ích con khác mà bạn muốn chia sẻ vì chúng thường sẽ bao gồm các yếu tố giao diện người dùng cơ bản không phức tạp XAML và với kiểu dáng đơn giản .

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