web-dev-qa-db-ja.com

WindowsフォームからWPFへの移行

長い間、私はWindows Formsの開発(VB6からC#.NET 4.5まで続いています)にとどまっており、どちらもWindows Formsができることの限界にほとんど達しました。 、およびネイティブコードによる特殊効果。

私は、WPFが(今のところ)未来であり、Windows Formsが非推奨のテクノロジーになりつつあることを知っています。

私はWPFとXAMLを学ぼうとしましたが、WPFの新しいデザイナーで立ち往生しています... Windowsフォームデザイナーと比較して使用するのは本当に難しいようです...もちろん...これは単なる学習曲線であり、ある時点で、WPFを適切に学習するコースに進む予定です。

それまでの間、.NETのWPFデザイナーに代わるものがあり、Windowsフォーム開発者により適しているかどうかを知りたいですか?

111
series0ne

私はWPFの初心者向けの記事についてブログを書くのが好きで、特に役立つものがいくつかあります。

要約すると、WinformsとWPFの最大の違いは、WPFではデータレイヤー(DataContext)がアプリケーションであり、WinformsではUIレイヤーがアプリケーションであることです。

別の見方をすれば、WPFでは、アプリケーションは作成したオブジェクトで構成され、テンプレートや他のUIオブジェクトを使用して、WPFにアプリケーションコンポーネントの描画方法を伝えます。

UIオブジェクトからアプリケーションを構築し、必要なデータを提供するWinFormsの反対です。

このため、アプリケーションコンポーネントはコードで設計されているため、デザイナーは実際にはそれほど使用されず、デザイナーはデータクラス(通常ModelsおよびViewModels)を反映するユーザーフレンドリーなインターフェイスを描画するだけです。

個人的には、UIがどのように見えるかをプレビューするためにDesignerを使用しますが、ドラッグアンドドロップWPFデザイナーほど高速で混乱が少ないため、すべてのXAMLを手動で入力することを好みます。好む。

したがって、WinForms開発者に適した他のWPFデザイナーがあるかどうかについてのあなたの質問に答えるために、別のデザイナーを探す代わりに、代わりにWPFの使用方法を学ぶことをお勧めします。 WinFormsのようにWPFを使用することは、それがとても素晴らしいことの多くを逃すことを意味します:)

174
Rachel

私はこれが古い質問であることを知っていますが、これを見ている誰かの利益のために、私は少しバランスを取り直すべきだと思います-他の答えのいくつかを読んで、私はいくつかの「デザイナーを使用しない'感情は、それを適切に使用していないことに起因します。 このチュートリアル は、他の投稿のいくつかの批判に答えるために非常に役立ちます。

たとえば、コントロールをドロップしたときのデフォルトであるWinformsのようなマージンベースのレイアウトから、右クリックして[レイアウトのリセット]を選択すると、よりWPF風のスタイルに切り替えることができます。

このビデオ は同様の分野をカバーしています。

私はまだバランスの取れたVS2010デザイナーを好んでいます-VS2013はTabItems **にドラッグアンドドロップすると少しバグが多いようです**(現在のプロジェクトでは多く使用しています)- 、これは実際のプラスになる可能性があります。

ただし、実際には、WPFとxamlを最大限に活用するには、デザイナービューとxamlビューの両方を合理的に流用し、それらを切り替える必要があります。デザイナーから恥ずかしがるなら、あなたはあなたを大いに助けることができる何かを見逃しています。

**編集-これはVS 2013のUpdate 3およびVS14のプレビューで改善されたようですが、これまでのところ、時々奇妙な動作をすることがあります。

9
peterG

同意しない人もいますが、VSデザイナーを使用しないことをお勧めします。少なくともインターフェイスを作成しないでください。アプリケーションを起動せずに実装の第一印象を取得したい場合、少なくともStylesTemplatesなどの洗練されたものが使用されない限り、それは優れたビューアです。しかし、IMHO、そのドラッグアンドドロップresultはプロトタイプとしてのみ使用する必要があるため、不要になった後は破棄してください。

これを使用しないことが重要な理由を次に示します。

  1. VSデザイナーは修正マージンと配置(レイアウトコントロールを使用している場合は通常必要ありません)で作業しているため、要件が変更された場合、多くのコントロールに触れる必要があります。 XAMLとWPFの仕組みに精通している場合は、ルックアンドフィールに関してわずかな労力で変更できるアプリケーションを作成できます。

  2. デザイナーがxamlを生成しているため、構成が最適ではなく、UIのパフォーマンスが低下する可能性があります。私はそれを測定しませんでした、それはただの感覚です。

はるかに優れた代替手段はMS Blendですが、開始は他のすべてが簡単ですが、そのドラッグアンドドロップの結果は、VSデザイナーの結果よりもはるかに優れています。
しかし、これは非常に強力なツールであり、非常に強力な要素を使用して最先端のUIを作成するのに役立ちます。少なくとも短いワークショップを訪れて、その機会についてのアイデアを得ることをお勧めします。

あなたの質問に戻って、私見、そして私は多くの人々が同意すると思います。 WPF Unleashed以降、詳細について詳しく知りたい場合は、WPF ProWinformsとは異なる多くの機能があります。デザイナーを使用してそれらを知ることはできません。それが最善のアプローチだと思います。

また、多くのフレームワークとライブラリ(たとえば、 MVVM lightWPFToolkit )があり、それらはすでにいくつかの一般的な問題を解決していることを考慮してください。そのため、車輪を再発明する必要はありません。

9
DHN

私はあなたと同じようにこのプロセスを経てきました。その後、私は会社のWPFの全員に教えていました。私が学んだいくつかの重要な教訓と、WPFを使用している人を知っています。

  1. コードビハインドでUIコントロールを使用している場合、....それは間違っています。コードビハインドでUIコントロールを扱う必要はまったくありません。
  2. クリックするのに視覚的な開発者は必要ありません。 XAMLのみを処理することにより、生産性が大幅に向上します。コピー/貼り付けを使用します。タイピング機能を信頼しないでください。それは多くの頭痛の種を救います。
  3. XAMLは、データを見渡すウィンドウと考えてください。背後のコードでは、データを変更しています。 XAMLでは、UIがデータを解釈する方法を定義しています。
  4. コンバーターは素晴らしいです。かなりの量のコンバーターを取得するとすぐに、生産性が飛躍的に向上します。非表示またはサイズ変更、またはUIについての非常に多くのコントロールイベントハンドラーの役割を引き継ぎます。

UI開発が楽しくなります。特に、Asycプロセスと一緒にプレイするのが好きな方法を見つけたら。 Winformsによって引き起こされた多くの頭痛の種を本当に取り除きます。

7
user853710

まず、Visual Studio deisgnerのWPF(XAML)では、常にxamlコードを使用してUIを構築し、コントロールをドラッグアンドドロップしないでください。コードをきれいに保つ必要があります。 Expression Blendを使用すると、ドラッグアンドドロップでよりグラフィック指向になりますが、無料ではありません。

大きな学習曲線ではありませんが、代替を探すのではなく、手動でxamlを実行する方法を学ぶ必要があると思います。

7
mlemay