2

私は GUI 開発が初めてで、Winforms と WPF の間の変換が以前に対処されたことを認識しています。しかし、私は新人として、今後の最善の方法についてはまだ不明であり、あなたの助けに非常に感謝しています.

基本的に、結合しようとしている 2 つの SDK サンプル コードがあります。1 つのサンプル コードは winforms で記述され、もう 1 つのサンプル コードは WPF で記述されています。最終製品にアニメーションを含めることを想定しているため、winforms コードを WPF に変換する必要があると思います (同意しない場合は修正してください)。ただし、これは複雑で長いコードであり、winforms に比較的慣れているので、WPF から winforms への変換を検討し、Open GL コントロールを使用する必要があるかどうか疑問に思いました。前進するための最も効率的な方法は何ですか?winforms サンプル コードからは、DataGrid からのデータが必要であり、WPF からは、現在 WindowsFormsHost に表示されている 512x512 のライブ イメージにアクセスする必要があります。

お世話になりました皆様、誠にありがとうございました!!

4

2 に答える 2

6

GUI開発は初めてです

WPF の学習曲線は非常に急勾配であることを警告しなければなりません。未経験者には不向きと言っていいでしょう。

Winforms と WPF 間の変換

問題はコード自体ではありません。問題は、それが書かれている考え方です。

  • すべての「従来の」winforms コード ビハインドは、WPF ではまったく不要です。

  • WPF にはDataBindingがあります (まあ、実際には winforms には databinding と呼ばれるものがありますが、それは WPF と比較して笑えるものです (winforms の他のものと同じくらい)。これにより、手続き型コードで任意の UI 要素を作成または操作する必要が完全になくなります。すべてが で定義されます)。 XAML と DataBound を関連するモデルとビューモデルに関連付ける必要があるため、これに必要な考え方には大きな違いがあります。

    • winforms では、UI はその状態に関する情報を保存します。この情報を読み取り/取得/変更するには、コードでこれらの UI 要素にアクセスする必要があります。
    • WPF では、ViewModel と Model (データを格納するために作成し、UI にはまったく関連付けられていない単純なクラス) がこの状態情報を格納します。この情報を読み取り/取得/変更するために、コード内の UI 要素にアクセスする必要はありません。

WPF ビジュアル ツリーは、winforms X,Y アプローチよりもはるかに複雑です。したがって、内部に深く埋め込まれている UI 要素を手に入れることは、あなたが本当に入りたくないものであるとしましょDataTemplateう。私を信じてください。ItemsControlDataTemplateCellTemplateDataGrid

@Rachel の優れた説明とリンクされたブログ投稿を読んで、不器用で退屈で、すべてにコードが多すぎる winforms の世界から、XAML の美しく、カスタマイズ可能で、スケーラブルで快適な世界に移行するために何が必要かをよりよく理解することをお勧めします。 DataBinding (すべての XAML ベースのテクノロジ WPF、WinRT、Silverlight、Windows Phone などに適用可能)。

最終製品にアニメーションを含めることを想定しているため

新しい製品を開始する (または開始する) 場合は、winforms を忘れてください。死んだ。デフォルトの醜いもの以外は何もサポートしていません。多くの恐ろしいハックに頼らなければ、カスタマイズ/アニメーション化/美化することはできません.

winforms はレガシー アプリケーションを維持するためだけのものであり、深刻なプロジェクトを開始する人にとってはもはや選択肢ではないと誰もが言うでしょう。

ただし、これは複雑で長いコードであり、私はwinformsに比較的慣れているため

MVVM を学習すると、winforms で何かを行うために必要なコードの 10% が WPF に必要であることがすぐにわかります。複雑で長いコード (おそらくコード ビハインド) は、Simple、Simple プロパティ、およびINotifyPropertyChanged. これが、WPF でコーディングする方法です。

于 2013-06-12T15:27:07.563 に答える
2

WPF が許可する分離によって節約される時間は、winform から切り替える努力の価値があります。後退すべき理由が思い浮かびません(理由がないわけではありませんが。

Windows フォームの wpf wrapperを使用して、これを分割して行うこともできます。次に、すべてを変換したら、ラッパーを削除するだけで、完全な wpf アプリケーションになります。

winformに対するWPFの利点についてのSOの質問

于 2013-06-12T15:11:51.130 に答える