当前位置:首页 > 生活百科

wpf和winform的区别(2者区别详细介绍)

栏目:生活百科日期:2025-03-19浏览:0

介绍

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的开发更容易,因为开发人员可以轻松地从工具箱中拖放控件。

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可视化设计和XAML文件编辑

上图显示了WPF应用程序的布局,其中在Designer旁边显示了XAML文件。

WPF项目的文件结构如下:

WPF项目的文件结构

每个窗口或页面都有一个用于添加控件的.xaml文件以及一个.cs,.vb等文件,后者是代码隐藏文件,更像是ASP.NET方式。与WinForms不同,WPF生成一个初始MainWindow来启动应用程序,并且要更改启动窗口,可以在App.xaml文件中执行此操作。

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

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数据绑定演示

上例中的{Binding}属性用于将&<TextBlock&>中的文本绑定到txtBindTextBox中的文本。这只是说明使用{Binding}属性在WPF中绑定数据有多么简单。

结论

本文通过两种创建桌面应用程序的.NET方式之间的体系结构,语法,文件结构以及应用程序行为差异,展示了WinForms和WPF之间的主要差异。尽管WinForms设计看似友好和直接,但是XAML带来了开发人员在现代桌面应用程序中可能需要的一些有用功能。

“wpf和winform的区别(2者区别详细介绍)” 的相关文章

ps怎么看尺寸比例(ps快速标注尺寸的步骤)

在淘宝电商平台有时候需要给产品标注尺寸,来体现产品的细节位,带来了PS软件该如何标注尺寸呢?大约花5分钟学习,练习10分钟,零基础的同学即可掌握。【步骤一】打开...

双十一短信营销方案(全套营销思路和成功案例)

近年来电子商务平台的连续不断激增,淘宝商家的竞争也愈来愈激烈,抓住每一个老顾客是淘宝卖家们务必要做的事情。那么在即将到来的2019年双十一,淘宝老顾客短信营销如...

win10字体大小怎么设置,分享一个简单又快捷的方法

“BOSS,你这字体也太小了吧”“我才搞定新显卡,用上了2K屏”……好吧,小狮子不知趣地又拿BOSS开涮了,相比喜欢精细显示的BOSS,小狮子显然更喜欢字号大点...

htc1000元左右的安卓智能手机好用吗(2023一千五左右手

说到HTC大家一定不会陌生,毕竟在安卓智能手机初期,它的存在就像当年塞班时代的诺基亚一样,是个王者。但是随着供应链的发展,HTC并没有及时的转变过来,以至于在智...

win10暂停更新怎么取消,家庭版禁止自动更新

中关村在线消息:北京时间3月14日,微软即将完成Windows10v1903版本的推送。与此同时,他们也决定改变软件更新的策略,允许家庭版用户可以暂停更新最多3...

以太网网卡驱动怎么安装(台式电脑无线网卡安装教程)

网卡是计算机与外界局域网进行连接的重要配置,但是想要正常上网只安装网卡还不行,还需要对应的驱动程序。下面,我就给大家介绍一下win10台式机安装网卡驱动的详细步...

云服务器包月多少钱(国内外个人免费云服务器)

在哪里给阿里云服务器续费?如果之前是在阿里云官网购买的云服务器,续费的时候也直接在阿里云官网续费就可以了。具体的步骤是:登陆阿里云,尽管管理中心,找到需要续费的...

今日头条广告投放费用怎么算(必知这4种计费方法)

今日头条广告价格表,今日头条开户多少钱?广告如何投放?  今日头条开户多少钱?对于初次接触今日头条广告的广告主来说都是陌生的,为了让大家更加清楚的了解今日头条的...

企业公关策划案例分析报告(4个方面分析公关策划案)

引言:你朋友圈的档次,决定自己的档次。关系,在我国是一个绕不开的话题。商家买卖需要靠关系,供货商与工程公司合作需要靠关系,甚至是去医院排队看病也离不开关系。企业...

什么叫服务器地址,服务器的工作原理及外形介绍

首先,让我们看一下如何专业定义服务器。服务器是一台高性能计算机。作为网络节点,它存储和处理网络上80%的数据和信息。也可以说服务器是指管理资源并为用户提供服务的...