一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

你知道WPF與WinForms的區(qū)別嗎?

 風(fēng)聲之家 2021-04-09

原創(chuàng) 沙漠盡頭的狼 Dotnet9 昨天

介紹

WPF的縮寫指微軟的Windows Presentation Foundation,而WinForms是Windows Forms Applications的簡(jiǎn)單組合。這兩個(gè)都是微軟的Windows應(yīng)用程序圖形用戶界面,開發(fā)人員可以使用它們來(lái)開發(fā)Windows桌面應(yīng)用程序。本文重點(diǎn)介紹兩種開發(fā)Windows桌面應(yīng)用程序的方法之間的主要區(qū)別,這些方法可以在現(xiàn)代系統(tǒng)開發(fā)中發(fā)揮更好的作用。

Windows Forms

WinForms于2002年2月作為.Net Framework的一部分引入。在很大程度上,WinForms允許開發(fā)人員在Windows窗體上拖放控件,并允許開發(fā)人員使用可以具有C#,VB.NET或任何其他.NET語(yǔ)言的代碼隱藏文件來(lái)操縱這些控件。每個(gè)WinForms控件都是一個(gè)類的實(shí)例,因?yàn)閃inForms作為具有一組C++類的包裝器存在。Microsoft的Visual Studio使WinForms的開發(fā)更容易,因?yàn)殚_發(fā)人員可以輕松地從工具箱中拖放控件。

圖片
WinForms工具箱中的控件

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

WPF桌面應(yīng)用程序

與WinForms不同,WPF的體系結(jié)構(gòu)包含三個(gè)主要組件:a presentation framework, presentation core, and mallcore。WPF并不完全依賴于標(biāo)準(zhǔn)Windows控件,因此是一種獨(dú)立方式。2007年,Microsoft引入了Windows Presentation Foundation(WPF),以交替WinForms來(lái)進(jìn)行.Net Framework桌面應(yīng)用程序開發(fā)。這一交替帶來(lái)了桌面應(yīng)用程序開發(fā)中的許多變化。首先,WPF將設(shè)計(jì)人員和程序員分開,可以使用Visual Studio或Blend分別設(shè)計(jì)UI,而開發(fā)人員可以使用代碼隱藏文件來(lái)操縱控件事件。

WPF使用XAML創(chuàng)建控件,其文件結(jié)構(gòu)更像ASP.NET,您可以自由使用設(shè)計(jì)器或編寫XAML代碼來(lái)創(chuàng)建控件。使用Canvas Panel的設(shè)計(jì)師仍然可以像在WinForms中一樣在Windows頁(yè)面上拖放控件。WPF帶來(lái)的主要區(qū)別是XAML文件和對(duì)XAML文件附帶的可見(jiàn)設(shè)計(jì)器的訪問(wèn)。

WPF可視化設(shè)計(jì)和XAML文件編輯

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

WPF項(xiàng)目的文件結(jié)構(gòu)如下:

圖片
WPF項(xiàng)目的文件結(jié)構(gòu)
  • 每個(gè)窗口或頁(yè)面都有一個(gè)用于添加控件的.xaml文件以及一個(gè).cs,.vb等文件,后者是代碼隱藏文件,更像是ASP.NET方式。
  • 與WinForms不同,WPF生成一個(gè)初始MainWindow來(lái)啟動(dòng)應(yīng)用程序,并且要更改啟動(dòng)窗口,可以在App.xaml文件中執(zhí)行此操作。
圖片
WPF主窗體啟動(dòng)配置
  • 該文件充當(dāng)應(yīng)用程序的條目。

WPF與WinForms的其他顯著區(qū)別是控件。要添加控件,您只需要編寫簡(jiǎn)單的XAML代碼。例如,要在WPF窗口中添加文本框,你可以寫如下代碼實(shí)現(xiàn):

<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./markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp1"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<StackPanel>
<TextBox></TextBox>
</StackPanel>
</Window>

請(qǐng)注意語(yǔ)法中的標(biāo)記,該標(biāo)記建議使用名稱“擴(kuò)展應(yīng)用程序標(biāo)記語(yǔ)言(XAML)”。XAML代碼放置在Window標(biāo)記中??丶?biāo)簽可能具有描述控件寬度,高度等的屬性,具體取決于控件。

WPF還帶來(lái)了與WinForms的另一個(gè)顯著區(qū)別,那就是可以添加帶有圖像的Button的功能。在WinForms中,向按鈕添加圖像意味著必須自己繪制圖像或包含一些第三方控件,但是WPF按鈕控件很簡(jiǎn)單,您可以向其中添加任何內(nèi)容。

<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./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運(yùn)行演示

WPF還提供了完全受支持的數(shù)據(jù)綁定功能,如下面的示例所示:

<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./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數(shù)據(jù)綁定演示

上例中的{Binding}屬性用于將<TextBlock>中的文本綁定到txtBindTextBox中的文本。這只是說(shuō)明使用{Binding}屬性在WPF中綁定數(shù)據(jù)有多么簡(jiǎn)單。

結(jié)論

本文通過(guò)兩種創(chuàng)建桌面應(yīng)用程序的.NET方式之間的體系結(jié)構(gòu),語(yǔ)法,文件結(jié)構(gòu)以及應(yīng)用程序行為差異,展示了WinForms和WPF之間的主要差異。盡管WinForms設(shè)計(jì)看似友好和直接,但是XAML帶來(lái)了開發(fā)人員在現(xiàn)代桌面應(yīng)用程序中可能需要的一些有用功能。

?

原文鏈接:https://www./article/wpf-vs-winforms/

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    国产视频在线一区二区| 国产精品激情对白一区二区| 亚洲综合精品天堂夜夜| 成人精品一区二区三区综合| 少妇人妻精品一区二区三区| 久久精品a毛片看国产成人| 欧洲精品一区二区三区四区| 91久久精品国产成人| 欧美有码黄片免费在线视频| 一本色道久久综合狠狠躁| 91人妻丝袜一区二区三区| 日韩一区二区三区在线日| 99久久精品国产日本| 暴力三级a特黄在线观看| 尹人大香蕉中文在线播放| 亚洲中文字幕在线乱码av| 国产精品伦一区二区三区四季| 欧美日韩国产成人高潮| 日韩高清中文字幕亚洲| 开心久久综合激情五月天| 蜜桃av人妻精品一区二区三区| 91精品国产av一区二区| 欧美国产精品区一区二区三区| 国产精品久久熟女吞精| 国产成人午夜福利片片| 国产精品熟女在线视频| 欧美一级内射一色桃子| 日韩欧美第一页在线观看| 成人精品视频在线观看不卡| 欧美日韩一级aa大片| 狠色婷婷久久一区二区三区| 亚洲成人精品免费在线观看 | 亚洲欧美日韩网友自拍| 91人妻久久精品一区二区三区| 好吊妞视频只有这里有精品| 91人妻人人做人碰人人九色| 精品人妻av区波多野结依| 出差被公高潮久久中文字幕| 日本成人三级在线播放| 国产三级黄片在线免费看| 国产精品内射视频免费|