zoukankan      html  css  js  c++  java
  • C# WPF vs WinForm

      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>


    作者:PEPE
    出处:http://pepe.cnblogs.com/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    Running APP 使用说明
    Android 控件八 WebView 控件
    Android 控件七 ImageView 控件
    Android 控件六 CheckBox 控件
    Android 控件五 RadioButton 控件
    Android 控件四 EditText 控件
    Android 控件三 TextView 控件实现 Button
    Android 控件二 Button
    Android 基础控件演示实例
    Android 控件一 TextView
  • 原文地址:https://www.cnblogs.com/PEPE/p/2631777.html
Copyright © 2011-2022 走看看