2012-01-17 60 views
10

Tôi đang cố gắng chuyển một C# -WPF-Project hiện có thành một ứng dụng iPad.Tái sử dụng C# -Dự án trên iPad

Theo như tôi phát hiện ra bây giờ, cách tốt nhất để đi sẽ là sử dụng MonoTouch và sử dụng lại càng nhiều C# -Logic càng tốt.

Vì dự án ban đầu được viết với WPF cho một TabletPC thực tế, câu hỏi của tôi là, nếu có bất kỳ cách nào, để sử dụng lại nguồn WPF hoặc ít nhất là giảm thiểu phần tôi phải viết lại.

Nếu có bất kỳ lựa chọn thay thế tốt để MonoTouch, tôi sẽ đánh giá cao lời khuyên quá :)

UPDATE: Nhận xét của bạn là hữu ích, nhưng không phải là 100% những gì tôi đang tìm kiếm. MonoCross trông đẹp, nhưng theo như tôi hiểu, nó chỉ "ẩn" phần iOS cụ thể. Điều tôi thực sự yêu thích, sẽ là một cách để tái sử dụng WPF-Controls "đặc biệt" viết tay. (Hoặc ít nhất là giảm thiểu công việc/thời gian để chuyển chúng.) Điều này sẽ rất tuyệt vời.

CẬP NHẬT 2: Có lẽ tôi nên thêm, rằng tôi cũng sẽ chấp nhận một số kỹ thuật ba bước "phức tạp". Ví dụ, có cách nào để dịch các tệp XAML-WPF thành HTML5 (hoặc một cái gì đó không kém phần mạnh mẽ) và sau đó sử dụng Titanium hoặc PhoneGap? Ngôn ngữ và khung không phải là vấn đề lớn, tôi chỉ cố gắng tìm cách sử dụng lại càng nhiều càng tốt :)

+0

Có loại dịch vụ web nào được sử dụng trong ứng dụng WCF gốc không? – fuzz

+0

Không, không có lớp Dịch vụ Web trong ứng dụng WPF gốc. – basti

+0

Xem câu hỏi liên quan này: http://stackoverflow.com/questions/8755801/anyone-have-experience-with-architecture-for-cross-platform-wp7-android-ios-mobi/8756281#8756281 – ColinE

Trả lời

3

Vui lòng xem this previous question liên quan và có thể quan tâm đến việc tạo nền tảng iOS, Android và các ứng dụng WP7.

Để trả lời câu hỏi của bạn, bạn không thể sử dụng lại WPF Guis trên iPad, IPhone, Android. Chỉ Windows Phone mới hỗ trợ chế độ xem bạc. Để giải quyết vấn đề này, bạn phải sử dụng kiến ​​trúc bộ điều khiển Model View (như iOS, Android sẽ không hỗ trợ databinding qua MVVM) trên cả ba và tạo các khung nhìn riêng biệt cho mỗi kiến ​​trúc.

Trong khi điều này có vẻ mất thời gian, xin lưu ý rằng nếu bạn xây dựng ứng dụng của bạn một cách chính xác sao cho logic nghiệp vụ và logic trình bày chính nằm trong các lớp Điều khiển (hoặc dịch vụ) thì bạn có thể sử dụng lại một tỷ lệ lớn mã của mình. Đây là giới hạn tương tự như khi bạn tạo mã đa nền tảng để triển khai kép cho Silverlight và WPF trên Windows. Các tệp Xaml thường phải cụ thể cho từng khung công tác, tuy nhiên thường có thể chia sẻ các điều khiển người dùng * .cs và chế độ xem/mã logic.


UPDATE: Sau Cập nhật của bạn (2) trong câu hỏi.

Có, bạn có thể sử dụng máy chủ của bên thứ ba để dịch tệp XAML-WPF sang HTML5 - ComponentArt Dashboard Server. Điều này tuyên bố dịch WPF/Silverlight ứng dụng bằng văn bản sử dụng MVVM nghiêm ngặt để HTML5/JS cho tính di động trên nhiều thiết bị. Tôi không thể xác minh cho hiệu quả này là gì và tôi biết nó là tốn kém, tuy nhiên nếu bạn đang nghiêm túc bị mắc kẹt và muốn cổng WPF -> HTML5 sau đó nó là giá trị điều tra này.

Trân trọng,

+0

Đó là một điều đáng tiếc, bởi vì dự án hiện tại được viết cho một TabletPC hỗ trợ cảm ứng. Kiến trúc nên được tốt rồi. Vì vậy, phần "lớn" là/là UserInterface. – basti

+1

@Chiffre có sự xấu hổ lớn. Tuy nhiên đó là điều với các API nền tảng cụ thể - táo/google không có động cơ để hỗ trợ WPF. Nó chỉ vì sự tấn công thông minh của đội Monotouch/Monodroid mà chúng tôi thậm chí có thể sử dụng C# trên các nền tảng này! Nếu bạn tìm thấy bất kỳ cách nào để chia sẻ thêm mã GUI, hãy cho tôi biết. Đó là một lĩnh vực mà tôi rất quan tâm. Trân trọng, –

+0

Theo như tôi thấy, "ComponentArt Dashboard Server" chỉ hoạt động cho các Điều khiển, được bao gồm trong "Framework". Tôi sẽ cần nó cho các điều khiển được tạo của riêng tôi. Nhưng tuy nhiên, tôi sẽ chấp nhận rằng tôi phải viết lại nó và bạn đã rất hữu ích! – basti

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