WPF,WCF 如雷贯耳 早听说 WPF,WCF大名,但是就是一直没有去了解她……今天突然想去看看她长啥样?
主要是给自己留个笔记,顺便比较下WPF和Winform之前的区别
1.什么是WPF?有什么用?
定义:Windows Presentation Foundation(WPF){ [,prezən'teiʃən, ,pri:-] n. 描述,陈述;介绍;赠送、 [faun'deiʃən] n. 基础;地基;基金会;根据;创立}是微软推出的基于Windows Vista的用户界面框架,属于.NET Framework 3.0的一部分。它提供了统一的编程模型、语言和框架,真正做到了分离界面设计人员与开发人员的工作;同时它提供了全新的多媒体交互用户图形界面。
作用: 具体可以看看官网或者去百科看看
Eg:
后台代码
/* * * 第 34章 Windows Presentation Foundation * */ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; //添加对程序集WindowsBase、PresentationCore和 PresentationFramework的引用 namespace _5ConsoleApplication1 { class Program { //STAThread:Single Thread Apartment Thread.(单一线程单元线程) //[]是用来表示Attributes; //是一种线程模型,用在程序的入口方法上(在C#和VB.NET里是Main()方法),来指定当前线程的ApartmentState 是STA。用在其他方法上不产生影响。在aspx页面上可以使用AspCompat = "true" 来达到同样的效果。这个属性只在 Com Interop 有用,如果全部是 managed code 则无用。简单的说法:[STAThread]指示应用程序的默认线程模型是单线程单元 (STA)。启动线程模型可设置为单线程单元或多线程单元。如果未对其进行设置,则该线程不被初始化。也就是说如果你用的.NET Framework,并且没有使用COM Interop,一般不需要这个Attribute。其它的还有MTA(多线程套间)、Free Thread(自由线程) [STAThread] static void Main(string[] args) { Window mainWindow = new Window(); Canvas canvas = new Canvas();// ['kænvəs] n. 帆布vt. 用帆布覆盖,用帆布装备 mainWindow.Content = canvas; mainWindow.Title = "WPF Application"; Button button1 = new Button(); canvas.Children.Add(button1); //WPF元素也可以从父元素中获得特性。例如,如果 Button元素位于 Canvas元素中,按钮的 Top //和Left属性把父元素的名称作为前缀。这种属性称为附带属性: Canvas.SetLeft(button1, 140); Canvas.SetTop(button1, 130); button1.Content = "Click me!"; //mainWindow.Content = button1; button1.Click += (sender, e) => MessageBox.Show("Button clicked"); Application app = new Application();// Application类的Run()方法负责处理 Windows消息。 app.Run(mainWindow); } } }
运行结果:
猛地一看和WinForm的区别还真看不出来……
再贴一个前台代码
<Window x:Class="_6WpfApplication1.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Height="300" Width="300"> <Grid> </Grid> </Window>
2.看看代码大致可以总结出以下几点区别
1、WPF的一个主要特性是设计人员和开发人员的工作很容易分开。设计人员的工作成果可以直接供开发人员使用。 设计人员可以使用Expression Blend工具,开发人员则使用Visual Studio 2008【前提是必须理解XAML】
XAML:XML for Applications Markup Language(XAML) 用于定义用户界面的层次结构
2、WPF的编程非常类似于Window窗体的编程,其区别是按钮有 Content属性,而不是Text属性
3、命名空间:
Windows窗体类位于 System.Windows.Forms命名空间
WPF类位于 System.Windows命名空间及其子命名空间中
4、Windows窗体控件基于Windows内置控件,利用了基于屏幕像素的Windows句柄。而WPF基于DirectX。应用程序不再使用Windows句柄,更便于重新设置 UI的大小,并内置了音频和视频的支持。
5、WPF,WinForm :萝卜青菜各有所爱
革命尚未成功,如果想有所造诣还得继续啃书+练习 我这里只是记录我的学习笔记。。。祝你成功
<Window x:Class="_6WpfApplication1.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="想有所造诣还得继续前进" Height="300" Width="300"> <Canvas> <Ellipse Canvas.Left="50" Canvas.Top="50" Width="100" Height="100" Stroke="Blue" StrokeThickness="4" Fill="Yellow" /> <Ellipse Canvas.Left="60" Canvas.Top="65" Width="25" Height="25" Stroke="Blue" StrokeThickness="3" Fill="White" /> <Ellipse Canvas.Left="70" Canvas.Top="75" Width="5" Height="5" Fill="Black" /> <Path Stroke="Blue" StrokeThickness="4" Data="M 62,125 Q 95,122 102,108" /> <Line X1="124" X2="132" Y1="144" Y2="166" Stroke="Blue" StrokeThickness="4" /> <Line X1="114" X2="133" Y1="169" Y2="166" Stroke="Blue" StrokeThickness="4" /> <Line X1="92" X2="82" Y1="146" Y2="168" Stroke="Blue" StrokeThickness="4" /> <Line X1="68" X2="83" Y1="160" Y2="168" Stroke="Blue" StrokeThickness="4" /> </Canvas> </Window>