简介

  WPF技术基于DirectX,完美的整合了矢量图形、2D或3D绘图技术、文件及多媒体技术。WPF将开发人员和设计人员的职责清楚的分离,提供了一种声明编程语言XAML。同时Expression Blend设计可以让界面设计更简单。

WPF特点

  基于矢量绘图技术:使用矢量绘图引擎,意味着可以无限放大和缩小图形。

  与设备无关的单位:使用1/96的逻辑单位,这是应用程序在不同的分辨率中依然能保持良好的交互性格。传统的以像素为单位的用户界面,在不同的分辨率下会显示不同的大小。

  声明式的程序设计:使用XAML标记语言,进行用户界面设计,配合代码后置文件开发应用程序,类似于Web Form应用程序。

  Web分割的布局模型:增强了流式布局模型体验,除了使用固定空间布局外,还可以使用流式布局来动态地排列用户控件,使用户界面可以适应不同的显示设备,同时便于创建动态内容。

  丰富的绘图模型:WPF除了可以处理基本图形,文本块之外,还提供了很多新的绘图特性,比如真正的透明控件,使用不同的透明度堆叠多个控件及原生3D支持特性。

  原生的多媒体、动画支持:WPF应用程序内置了动画特性。设计人员可以使用XAML或者blend工具进行设计。这个工具会生成对应的XAML代码,进而丰富WPF应用程序的交互性。

  基于页面的应用程序:WPF允许开发人员创建浏览器风格的应用程序,让用户使用类似超链接的方式在页面中进行导航。

相关程序集文件

  PresentationFramework.dll  放置窗口、面板以及其他类型的控件。实现了高层的抽象。开发人员所使用的大多数类都来自此。

  PresentationCore.dll 基本类型,UIElement 和Visual

  WindowsBase.dll 存放在WPF外部可能被重用的基本元素,比如DependencyObject。

  Milcore.dll 输出系统的核心,也是多媒体整合层的基础。主要用户和DirectX交互。

   WindowsCodecs.dll 底层API,用户提供图像成像支持,比如图像处理、图像显示、缩放bitmmap和JPEG.

  Direct3D 提供3D图像输出端的底层API

WPF应用程序模板

使用VS工具新建WPF程序时工包含以上四种模板:

  WPF应用程序:独立可以执行应用程序,类似Windows Forms的exe应用程序。

  WPF浏览器应用程序:基于XAML的浏览器应用程序,以xbap作为扩展名。

  WPF用户控件库:用于创建可重用的、组件化的用户控件库。

  WPF自定义控件库:用于开发WPF自定义空间的控件库项目。

创建WPF应用程序

新建一个WPF应用程序项目,程序结构如下:

编写基本弹出框功能。

1、双击打开MainWindow.xaml文件,

2、从工具箱中拖一个button控件到页面,修改content属性为Hello WPF,

3、双击控件,进入按钮的单击事件代码绑定,

4、编写代码

MessageBox.Show("Hello WPF");

执行应用程序,会弹出一个对话框将会显示Hello WPF.

Xaml代码

 <Button Content="HelloWPF" HorizontalAlignment="Left" Margin="141,135,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click"/> 

后置代码:

 private void Button_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("Hello WPF");
}

 

在我们新建一个WPF项目之后,vs会自动帮我们创建MainWindow.xaml和App.xaml文件和对应的.cs文件,

在Console和winFOrm程序的入口都是main函数,WPF应用程序也是一样。App.xaml和App.xaml.cs文件 是WPF引用程序的入口,我们打开app.xaml和app.xaml.cs文件发现并没有发现入口函数main。这是怎么会事呢?我们在App.xaml文件中发现一个属性StartupUri指向一个文件MainWindow.xaml。原来StartupUri属性就可以指定一个起始界面。在这我们编译程序之后会在文件夹obj\Debug 下找到一个文件App.g.cs。打开之后会找到熟悉的main函数,和指定的StartupUri属性。所以程序一运行就会启动MainWindow.xaml窗口。

App.xaml文件:

<Application x:Class="HelloWPF.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:HelloWPF"
StartupUri="MainWindow.xaml">
<Application.Resources> </Application.Resources>
</Application>

  

App.xaml.cs文件

namespace HelloWPF
{
/// <summary>
/// App.xaml 的交互逻辑
/// </summary>
public partial class App : Application
{
}
}

App.g.cs

namespace HelloWPF {

    /// <summary>
/// App
/// </summary>
public partial class App : System.Windows.Application { /// <summary>
/// InitializeComponent
/// </summary>
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
public void InitializeComponent() { #line 5 "..\..\App.xaml"
this.StartupUri = new System.Uri("MainWindow.xaml", System.UriKind.Relative); #line default
#line hidden
} /// <summary>
/// Application Entry Point.
/// </summary>
[System.STAThreadAttribute()]
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
public static void Main() {
HelloWPF.App app = new HelloWPF.App();
app.InitializeComponent();
app.Run();
}
}
}

  

WPF 10天修炼 第一天- 入门的更多相关文章

  1. WPF 10天修炼 第十天- WPF数据绑定

    WPF数据绑定 数据绑定到元素属性是将源对象指定为一个WPF元素,并且源属性是一个依赖属性,依赖属性内置了变更通知.当改变源对象依赖属性值之后,绑定目标可以立即得到更新,开发人员不需要手动编写响应事件 ...

  2. WPF 10天修炼 第八天 - 形状、画刷和变换

    图形 在WPF中使用绘图最简单的就是使用Shape类.Shape类继承自FrameworkElement,是一个专门用来绘图的类.Shape类中年派生的类有直线.矩形.多边形和圆形等. System. ...

  3. WPF 10天修炼 第九天 - 几何图形

    几何图形 使用LineGeometry.RectangleGeometry.EllipseGeometry对象分别绘制直线.矩形.椭圆. 使用GeometryGroup可以绘制组合图形. <Wi ...

  4. WPF 10天修炼 第七天- WPF资源、样式、控件模板

    WPF资源 对象资源 WPF允许在XAML标记的任意位置定义资源.比如在特定的控件.窗口或应用程序级别定义资源,WPF资源系统提供的对象资源有如下好处: 1.  高效:使用对象资源可以在一个地方定义而 ...

  5. WPF 10天修炼 第六天- 系统属性和常用控件

    WPF系统属性和常用控件 渐变的背景色 WPF中的前景色和背景色不同于传统Winform的设置,这些属性都是Brush类型的值.在XAML中,当为这些属性设置指定的颜色后将被转换为SolidColor ...

  6. WPF 10天修炼 第五天- 内容控件

    WPF内容控件 在WPF中,所有呈现在用户界面上的对象都称为用户界面元素.但是只有派生自System.Windows.Controls.Control类的对象才称为控件.内容控件通常是指具有Conte ...

  7. WPF 10天修炼 第四天- WPF布局容器

    WPF布局 WPF的窗口也就是Window类,是一个内容控件,该控件派生自ContentControl.内容控件有一个Content属性,该属性有一个限制,只能放置一个用户界面元素,或一个字符串.为了 ...

  8. WPF 10天修炼 第三天- Application全局应用程序类

    Application对象 当一个WPF应用程序启动时,首先会实例化一个全局唯一的Application对象,类似于WinForm下的Application类,用于控制整个应用程序,该类将用于追踪应用 ...

  9. WPF 10天修炼 第二天- XAML语言

    XAML是什么 XAML是一种与.NET CLR紧密集成的声明性UI标记语言.XAML中的对象元素对应到CLR中的类型或结构.XAML命名空间对应到CLR中类的命名空间,元素类型则对应到CLR中的类型 ...

随机推荐

  1. SpringBoot整合RabbitMQ-服务安装

    本系列是学习SpringBoot整合RabbitMQ的练手,包含服务安装,RabbitMQ整合SpringBoot2.x,消息可靠性投递实现等三篇博客. 学习路径:https://www.imooc. ...

  2. iview库表table组件内嵌套Select组件

    表格内render函数渲染Select组件   { title: '属性值', key: 'values', render:(h,params)=>{ return h('Select',{   ...

  3. mybatis mapper映射文件全解

    目录 select.update.delete.insert 设置参数类型以及取值 基本数据类型 对象数据类型 map数据类型 #{  } 和 ${  } 的区别 ResultMap Auto-map ...

  4. xadmin在Django 1.11中的使用及中英文切换

    版权声明:本文为博主原创文章,欢迎转载,并请注明出处.联系方式:460356155@qq.com xadmin是一个强大的替代django admin的管理后台,github地址为:https://g ...

  5. 在nginx上用FastCGI解析PHP

    nginx配置文件: Nginx 默认使用  include enable-php.conf;   通过enable-php.conf 来解析PHP,该文件内容如下 location ~ [^/]\. ...

  6. 关于mysql主从架构master宕机后,请求转移问题解决办法

    mysql架构:一主一从 问题一:有两台mysql数据库,已做好主从.如果运行某一天master服务器mysql故障导致前端请求无法处理怎么办? 答:将前端需要数据库处理的请求转移到slave机上. ...

  7. Djangon

    2.怎么样从浏览器获得用户输入的数据? request.浏览器的八种申请方式.get(条件) request.浏览器的八种申请方式[] request.浏览器的八种申请方式(这里什么也不要写)> ...

  8. Qt QComboBox下拉框文字重叠解决方法

    如果QComboBox下拉框文字重叠,在设置好样式之后,在后面加 setView(new QListView())即可; m_comboRate = new QComboBox(); m_comboR ...

  9. 「HGOI#2019.4.19省选模拟赛」赛后总结

    t1-Painting 这道题目比较简单,但是我比较弱就只是写了一个链表合并和区间DP. 别人的贪心吊打我的DP,嘤嘤嘤. #include <bits/stdc++.h> #define ...

  10. Python import hook

    转自http://blog.konghy.cn/2016/10/25/python-import-hook/,这里有好多好文章 import hook 通常被译为 探针.我们可以认为每当导入模块的时候 ...