2012-01-17 7 views
10

私は既存のC#-WPF-ProjectをiPad-Appとして移植しようとしています。再利用C#-Project on iPad

私が今までに気づいた限り、最良の方法はMonoTouchを使用し、できるだけ多くのC#-Logicを再利用することです。

元のプロジェクトは実際のTabletPCのためにWPFで書かれているので、私の質問は何か方法があればWPFソースを再利用するか、少なくとも再書き込みが必要な部分を最小限に抑えることです。

MonoTouchでの任意の良い選択肢がある場合、私は感謝のヒントすぎ:)

UPDATEは:あなたのご意見は便利でしたが、私が探していたものは100%ではありません。 MonoCrossはうまく見えますが、わかっている限り、iOS固有の部分を「隠す」だけです。私が本当に好きなのは、手書きの「特別な」WPF-Controlsを再利用する方法です。 (あるいは、少なくともそれらを移す仕事/時間を最小限に抑えてください)。これはすばらしいことです。

UPDATE 2:私は、「複雑な」3段階技法も受け入れることをお勧めしますか?たとえば、XAML-WPFファイルをHTML5(または同様の強力なもの)に変換してTitaniumまたはPhoneGapを使用する方法はありますか?言語とフレームワークは大きな問題ではないはずです。できるだけ再利用する方法を見つけようとしています。

+0

元WCFアプリで使用されるWebサービス層のいくつかの並べ替えはありますか? – fuzz

+0

いいえ、元のWPF-appにWebサービスレイヤはありません。 – basti

+0

関連する質問を参照してください:http://stackoverflow.com/questions/8755801/anyone-have-experience-with-architecture-for-cross-platform-wp7-android-ios-mobi/8756281#8756281 – ColinE

答えて

3

this previous questionを参照してください。これは、クロスプラットフォームiOSの作成に関心がありますおよびWP7アプリケーション。

あなたの質問に答えて、いいえ、WPF GuisをiPad、iPhone、Androidで再利用することはできません。 Windows PhoneのみがSilverlightビューをサポートします。これを回避するには、Model Viewコントローラアーキテクチャ(iOSとして、AndroidはMVVMによるデータバインディングをサポートしていません)を3つすべて使用し、アーキテクチャごとに個別のビューを作成する必要があります。

重要なビジネスロジックとプレゼンテーションロジックがコントローラ(またはサービス)レイヤー内にあるようにアプリケーションを正しくアーキテクチャすると、コードの大部分を再利用できます。これは、Windows上でSilverlightとWPFにデュアルデプロイするクロスプラットフォームコードを作成する場合と同じ制限です。 Xamlファイルは多くの場合、* .csユーザーコントロールとビューモデル/コードロジックを共有することができますが、各フレームワーク固有のものである必要があります。


UPDATE:問題のあなたの更新に続いて(2)

はい、サードパーティのサーバーを使用して、XAML-WPFファイルをHTML5に変換することができます - ComponentArt Dashboard Server。これは、厳密なMVVMを使用して書かれたWPF/Silverlightアプリケーションを複数のデバイス間での移植性のためにHTML5/JSに翻訳することを主張しています。私はこれがどれほど効果的かを保証することはできません。しかし、それが高価であることは分かっています。しかし、あなたが真剣に立ち往生し、WPF - > HTML5を移植したいなら、これを調査する価値があります。

敬具、

+0

既存のプロジェクトは、タッチ対応TabletPCのために書かれているので、それは哀れみです。アーキテクチャはすでにうまくいくはずです。つまり、「大きな」部分はUserInterfaceです。 – basti

+1

@Chiffreはい大きな恥です。しかし、それはプラットフォーム固有のAPIを持つものです - apple/googleはWPFをサポートするインセンティブがありません。 Monotouch/Monodroidチームの巧妙なハッカーのためだけに、これらのプラットフォームでC#を使用することさえできます!より多くのGUIコードを共有する方法が見つかった場合は、私に知らせてください。 –

+0

「ComponentArtダッシュボードサーバー」は、「フレームワーク」に含まれているコントロールに対してのみ機能します。私は自分の作成したコントロールのためにそれを必要としていました。しかし、それにもかかわらず、私はそれを書き直さなければならないと私は受け入れ、あなたは非常に有用でした! – basti