2者區別詳細介紹「wpf和winform的區別」

介紹

WPF的縮寫指微軟的Windows Presentation Foundation,而WinForms是Windows Forms Applications的簡單組合。這兩個都是微軟的Windows應用程序圖形用戶界面,開發人員可以使用它們來開發Windows桌面應用程序。本文重點介紹兩種開發Windows桌面應用程序的方法之間的主要區別,這些方法可以在現代系統開發中發揮更好的作用。

Windows Forms

WinForms於2002年2月作為.Net Framework的一部分引入。在很大程度上,WinForms允許開發人員在Windows窗體上拖放控件,並允許開發人員使用可以具有C#,VB.NET或任何其他.NET語言的代碼隱藏文件來操縱這些控件。每個WinForms控件都是一個類的實例,因為WinForms作為具有一組C++類的包裝器存在。Microsoft的Visual Studio使WinForms的開發更容易,因為開發人員可以輕鬆地從工具箱中拖放控件。

面試官問:你知道WPF與WinForms的區別嗎?

WinForms工具箱中的控件

在WinForms桌面應用程序中,開發人員只能訪問他們可以在其中操縱控件事件的代碼隱藏文件。WinForms桌面應用程序在控件的功能和應用程序行為方面有其局限性,這將在下一部分中揭示。

WPF桌面應用程序

與WinForms不同,WPF的體系結構包含三個主要組件:a presentation framework, presentation core, and mallcore。WPF並不完全依賴於標準Windows控件,因此是一種獨立方式。2007年,Microsoft引入了Windows Presentation Foundation(WPF),以交替WinForms來進行.Net Framework桌面應用程序開發。這一交替帶來了桌面應用程序開發中的許多變化。首先,WPF將設計人員和程序員分開,可以使用Visual Studio或Blend分別設計UI,而開發人員可以使用代碼隱藏文件來操縱控件事件。

WPF使用XAML創建控件,其文件結構更像ASP.NET,您可以自由使用設計器或編寫XAML代碼來創建控件。使用Canvas Panel的設計師仍然可以像在WinForms中一樣在Windows頁面上拖放控件。WPF帶來的主要區別是XAML文件和對XAML文件附帶的可見設計器的訪問。

面試官問:你知道WPF與WinForms的區別嗎?

WPF可視化設計和XAML文件編輯

上圖顯示了WPF應用程序的布局,其中在Designer旁邊顯示了XAML文件。

WPF項目的文件結構如下:

面試官問:你知道WPF與WinForms的區別嗎?

WPF項目的文件結構

  • 每個窗口或頁面都有一個用於添加控件的.xaml文件以及一個.cs,.vb等文件,後者是代碼隱藏文件,更像是ASP.NET方式。
  • 與WinForms不同,WPF生成一個初始MainWindow來啟動應用程序,並且要更改啟動窗口,可以在App.xaml文件中執行此操作。
面試官問:你知道WPF與WinForms的區別嗎?

WPF主窗體啟動配置

  • 該文件充當應用程序的條目。

WPF與WinForms的其他顯著區別是控件。要添加控件,您只需要編寫簡單的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)」。XAML代碼放置在Window標記中。控件標籤可能具有描述控件寬度,高度等的屬性,具體取決於控件。

WPF還帶來了與WinForms的另一個顯著區別,那就是可以添加帶有圖像的Button的功能。在WinForms中,向按鈕添加圖像意味着必須自己繪製圖像或包含一些第三方控件,但是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與WinForms的區別嗎?

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與WinForms的區別嗎?

WPF數據綁定演示

上例中的{Binding}屬性用於將<TextBlock>中的文本綁定到txtBindTextBox中的文本。這只是說明使用{Binding}屬性在WPF中綁定數據有多麼簡單。

結論

本文通過兩種創建桌面應用程序的.NET方式之間的體系結構,語法,文件結構以及應用程序行為差異,展示了WinForms和WPF之間的主要差異。儘管WinForms設計看似友好和直接,但是XAML帶來了開發人員在現代桌面應用程序中可能需要的一些有用功能。

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/281155.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-21 13:16
下一篇 2024-12-21 13:16

相關推薦

發表回復

登錄後才能評論