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
う。私を信じてください。ItemsControl
DataTemplate
CellTemplate
DataGrid
@Rachel の優れた説明とリンクされたブログ投稿を読んで、不器用で退屈で、すべてにコードが多すぎる winforms の世界から、XAML の美しく、カスタマイズ可能で、スケーラブルで快適な世界に移行するために何が必要かをよりよく理解することをお勧めします。 DataBinding (すべての XAML ベースのテクノロジ WPF、WinRT、Silverlight、Windows Phone などに適用可能)。
最終製品にアニメーションを含めることを想定しているため
新しい製品を開始する (または開始する) 場合は、winforms を忘れてください。死んだ。デフォルトの醜いもの以外は何もサポートしていません。多くの恐ろしいハックに頼らなければ、カスタマイズ/アニメーション化/美化することはできません.
winforms はレガシー アプリケーションを維持するためだけのものであり、深刻なプロジェクトを開始する人にとってはもはや選択肢ではないと誰もが言うでしょう。
ただし、これは複雑で長いコードであり、私はwinformsに比較的慣れているため
MVVM を学習すると、winforms で何かを行うために必要なコードの 10% が WPF に必要であることがすぐにわかります。複雑で長いコード (おそらくコード ビハインド) は、Simple、Simple プロパティ、およびINotifyPropertyChanged
. これが、WPF でコーディングする方法です。