WPFとWinformsの違いを知っていますか?

WPFとWinformsの違いを知っていますか?

現代のシステム開発でより良い役割を果たすことができるWindowsデスクトップアプリケーションを開発する2つのアプローチの主な違いを紹介します。

最后更新 2021/04/07 23:59
沙漠尽头的狼
预计阅读 4 分钟
分类
WPF Winform
标签
.NET C# WPF Winform

プレゼンテーション:プレゼンテーション

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ツールボックスのコントロール:

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ファイルの編集:

WPF可视化设计和XAML文件编辑

上の図は、Designerの横にXAMLファイルが表示されているWPFアプリケーションのレイアウトを示しています。

WPFプロジェクトのファイル構造は以下のとおりです。

WPF项目的文件结构

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

WPFメインフォーム

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运行演示

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データバインディングのデモンストレーション

WPF数据绑定演示

上の例のプロパティは、TextBlock内のテキストをtxtBindText Box内のテキストにバインドするために使用されます。属性を使ってWPFでデータをバインドするのがいかに簡単かを示しているだけです。

結論:結論

この記事では、. NETデスクトップアプリケーションを作成する2つの方法のアーキテクチャ、構文、ファイル構造、およびアプリケーション動作の違いを通じて、Win FormsとWPFの主な違いを示します。Win Formsのデザインはフレンドリーで簡単に見えますが、XAMLは開発者が現代のデスクトップアプリケーションで必要とする便利な機能を提供します。

原文へのリンク:https//www.c-sharpcorner.com/article/wpf-vs-winforms/

Keep Exploring

延伸阅读

更多文章
同分类 / 同标签 2022/04/07

WinformとWPFの違いは何ですか?

“Win FormとWPFの違いは何ですか?”と聞かれます。考虑这个问题很简单回答,但是总是没有系統的分析过,今日特别书写一个个个人的観点的文章记录総括。

继续阅读