プレゼンテーション:プレゼンテーション
WPFはMicrosoftのWindows Presentation Foundationの略で、Win FormsはWindows Formsアプリケーションの単純な組み合わせです。どちらもマイクロソフトのWindowsアプリケーショングラフィカルユーザーインターフェイスであり、開発者はWindowsデスクトップアプリケーションを開発するために使用できます。この記事では、現代のシステム開発でより良い役割を果たすことができるWindowsデスクトップアプリケーションを開発する2つのアプローチの主な違いに焦点を当てます。
Windows Forms
Win Formsは2002 年 2 月に. NET Frameworkの一部として導入された。Win Formsを使用すると、開発者はWindowsフォーム上でコントロールをドラッグアンドドロップでき、C#、VB.NET、またはその他の. NET言語を使用できるコード隠しファイルを使用してコントロールを操作できます。Win FormsはC++クラスのセットを持つラッパーとして存在するため、各Win Formsコントロールはクラスのインスタンスです。マイクロソフトのVisual Studioは、開発者がツールボックスからコントロールを簡単にドラッグアンドドロップできるため、Win Formsの開発を容易にします。
WinFormsツールボックスのコントロール:

Win Formsデスクトップアプリケーションでは、開発者はコントロールイベントを操作できるコード隠しファイルのみにアクセスできます。Win Formsデスクトップアプリケーションには、コントロールの機能とアプリケーションの動作に制限がありますが、これは次のセクションで明らかになります。
WPFデスクトップアプリケーション
Win Formsとは異なり、WPFのアーキテクチャはプレゼンテーションフレームワーク、プレゼンテーションコア、およびmallcoreの3つの主要コンポーネントで構成されている。WPFは標準のWindowsコントロールに完全に依存していないため、スタンドアロンのアプローチです。2007 年、マイクロソフトは. NET Frameworkデスクトップアプリケーション開発を行うためにWinFormsを代替するWindows Presentation Foundation WPFを導入した。この切り替えは、デスクトップアプリケーション開発に多くの変化をもたらしました。まず、WPFはデザイナーとプログラマーを分離し、Visual StudioまたはBlendを使用して別々にUIを設計でき、開発者はコードを使用してファイルを隠し、コントロールイベントを操作できる。
WPFはXAMLを使用してコントロールを作成します。ファイル構造はASP.NETに似ており、デザイナーを使用したり、XAMLコードを記述したりする自由があります。Canvas Panelを使用しているデザイナーは、Win Formsと同様にWindowsページにコントロールをドラッグアンドドロップできます。WPFがもたらす主な違いは、XAMLファイルと、XAMLファイルに付属する可視デザイナーへのアクセスです。
WPFビジュアルデザインとXAMLファイルの編集:

上の図は、Designerの横にXAMLファイルが表示されているWPFアプリケーションのレイアウトを示しています。
WPFプロジェクトのファイル構造は以下のとおりです。

- 各ウィンドウまたはページには、コントロールを追加するための.xamlファイルと、ASP.NETアプローチに似たコード隠しファイルである.cs、.vbなどのファイルがあります。
- Win Formsとは異なり、WPFはアプリケーションを起動するために初期のMainWindowを生成し、起動ウィンドウを変更するにはApp.xamlファイルでこれを行うことができる。
WPFメインフォーム

- このファイルはアプリケーションのエントリとして機能します。
WPFとWin Formsのもう一つの重要な違いはコントロールです。コントロールを追加するには、簡単なXAMLコードを記述するだけです。例えば、WPFウィンドウにテキストボックスを追加するには、次のような実装を記述できます:
<Window
x:Class="WpfApp1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp1"
mc:Ignorable="d"
Title="MainWindow"
Height="450"
Width="800"
>
<StackPanel>
<TextBox></TextBox>
</StackPanel>
</Window>
XAML Extended Application Markup Languageという名前を推奨する構文内のタグに注意してください。XAMLコードはWindowタグに配置されます。コントロールタグには、コントロールに応じて、コントロールの幅、高さなどを記述するプロパティがあります。
WPFはWin Formsとのもう一つの大きな違いをもたらします。画像付きのボタンを追加できる機能です。Win Formsでは、ボタンに画像を追加すると、自分で画像を描画するか、サードパーティ製のコントロールを含める必要がありますが、WPFボタンコントロールはシンプルで、何でも追加できます。
<Window
x:Class="WpfApp1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp1"
mc:Ignorable="d"
Title="MainWindow"
Height="500"
Width="800"
>
<button Padding="5">
<StackPanel Orientation="Horizontal">
<image Source="/Image.jpg" Height="25" Width="50" />
<TextBlock Margin="5,0">I'm a Button</TextBlock>
</StackPanel>
</button>
</Window>
出力は以下のとおりです。WPFの動作デモ

WPFは、次の例に示すように、完全にサポートされたデータバインディング機能も提供します。
<Window
x:Class="WpfApp1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp1"
mc:Ignorable="d"
Title="MainWindow"
Height="500"
Width="800"
>
<StackPanel Margin="10">
<WrapPanel Margin="0,10">
<label Content="Your Text Here:" FontWeight="Bold" />
<TextBox
Name="txtBind"
Height="20"
Width="250"
RenderTransformOrigin="-2.75,0.587"
Margin="59,0,336,0"
/>
</WrapPanel>
<WrapPanel Margin="0,10">
<TextBlock Text="Bound-Text: " FontWeight="Bold" />
<TextBlock Text="{Binding Path=Text, ElementName=txtBind}" />
</WrapPanel>
</StackPanel>
</Window>
出力:WPFデータバインディングのデモンストレーション

上の例のプロパティは、TextBlock内のテキストをtxtBindText Box内のテキストにバインドするために使用されます。属性を使ってWPFでデータをバインドするのがいかに簡単かを示しているだけです。
結論:結論
この記事では、. NETデスクトップアプリケーションを作成する2つの方法のアーキテクチャ、構文、ファイル構造、およびアプリケーション動作の違いを通じて、Win FormsとWPFの主な違いを示します。Win Formsのデザインはフレンドリーで簡単に見えますが、XAMLは開発者が現代のデスクトップアプリケーションで必要とする便利な機能を提供します。
原文へのリンク:https//www.c-sharpcorner.com/article/wpf-vs-winforms/