本文来自网络,由大胡子制作.版权归原作者所有.如果你有 wpf 的好资料可以联系我 QQ:249872349,Email:BigBeard@126.com
目录
WPF 体系结构 .......................................................................................................................................................... 3
WPF 应用程序管理 .................................................................................................................................................. 5
一、WPF 应用程序由 System.Windows.Application 类进行管理 ................................................................. 5
二、创建 WPF 应用程序 ................................................................................................................................. 5
三、应用程序关闭 ........................................................................................................................................... 6
四、Application 对象的事件 ........................................................................................................................... 7
五、WPF 应用程序生存周期 .......................................................................................................................... 9
WPF 窗体 ................................................................................................................................................................ 10
一、窗体类 ..................................................................................................................................................... 10
1、XAML 文件....................................................................................................................................... 10
2、后台代码文件 ................................................................................................................................... 10
二、窗体的生存周期 ......................................................................................................................................11
1、显示窗体 ............................................................................................................................................11
2、关闭窗体 ........................................................................................................................................... 12
3、窗体的激活 ....................................................................................................................................... 12
4、窗体的生存周期 ............................................................................................................................... 12
三、其他窗体相关的属性、方法、事件 ..................................................................................................... 15
四、定义异形窗体 ......................................................................................................................................... 16
StackPanel、WrapPanel、DockPanel 容器 .......................................................................................................... 19
一、StackPanel ............................................................................................................................................... 19
1、可以使用 Orientation 属性更改堆叠的顺序 ................................................................................... 19
2、设置控件的属性,调整控件的显示................................................................................................ 20
二、WrapPanel ................................................................................................................................................ 20
三、DockPanel ................................................................................................................................................ 21
Grid UniformGrid 容器 ........................................................................................................................................ 22
一、Grid .......................................................................................................................................................... 22
二、使用 GridSplit 分割 ................................................................................................................................ 23
三、UniformGrid ............................................................................................................................................ 25
Canvas、InkCanvas 布局 ....................................................................................................................................... 27
一、Canvas ..................................................................................................................................................... 27
二、InkCanvas ................................................................................................................................................ 27
WPF 对控件其类型的继承方式如下 .................................................................................................................... 29
WPF 控件内容模型 ................................................................................................................................................ 32
一、ContentControl 模型 ............................................................................................................................... 35
二、HeaderedContentControl 模型 ................................................................................................................ 36
三、ItemsControl 模型 ................................................................................................................................... 38
1、使用 ItemSource 属性 ....................................................................................................................... 38
2、使用 Items 属性 ................................................................................................................................ 40
四、HeaderedItemsControl 模型 .................................................................................................................... 42
Panel Decorator TextBlock 内容模型 .................................................................................................................. 44
一、Panel 内容模型 ....................................................................................................................................... 44
本文来自网络,由大胡子制作.版权归原作者所有.如果你有 wpf 的好资料可以联系我 QQ:249872349,Email:BigBeard@126.com
二、Decorator 内容模型 ................................................................................................................................ 45
三、TextBlock 模型 ........................................................................................................................................ 46
四、TextBox 模型 ........................................................................................................................................... 49
依赖项属性和路由事件 ......................................................................................................................................... 50
一、依赖项属性(Dependency Property ....................................................................................................... 50
1、依赖项属性与 CLR 包装属性 ......................................................................................................... 50
2、使用由依赖项属性提供的属性功能................................................................................................ 51
3、自定义依赖项属性及重写依赖项属性 ............................................................................................ 52
二、路由事件(RoutedEvent)..................................................................................................................... 53
键盘输入、鼠标输入、焦点处理 ......................................................................................................................... 56
一、键盘类和键盘事件 ................................................................................................................................. 56
二、鼠标类和鼠标事件 ................................................................................................................................. 57
三、焦点处理 ................................................................................................................................................. 60
1、键盘焦点: ....................................................................................................................................... 60
2、逻辑焦点 ........................................................................................................................................... 61
3、键盘导航 ........................................................................................................................................... 61
4、焦点事件 ........................................................................................................................................... 61
WPF 命令 ................................................................................................................................................................ 63
一、命令: ..................................................................................................................................................... 64
二、命令源 ..................................................................................................................................................... 65
三、命令目标 ................................................................................................................................................. 66
四、命令绑定 ................................................................................................................................................. 67
WPF 资源 ................................................................................................................................................................ 70
一、什么是资源 ............................................................................................................................................. 70
二、资源的定义及 XAML 中引用 ................................................................................................................ 70
三、XAML 解析资源的顺序 ......................................................................................................................... 74
四、静态资源(StaticResource)和动态资源(DynamicResource) ........................................................ 77
五、不同类型的资源 ..................................................................................................................................... 81
1、程序集资源。 ................................................................................................................................... 81
2、对象资源 ........................................................................................................................................... 82
本文来自网络,由大胡子制作.版权归原作者所有.如果你有 wpf 的好资料可以联系我 QQ:249872349,Email:BigBeard@126.com
WPF 体系结构
WPF 的基础的体系结构,所引用的 Assembly 如下图所示:
关系图中的 PresentationFramework、PresentationCore 和 milcore 是 WPF 的主要
代码部分。在这些组件中,只有一个是非托管组件 – milcore。milcore 是以非托管代码编
写的,目的是实现与 DirectX 的紧密集成。WPF 中的所有显示是通过 DirectX 引擎完成
的,可实现高效的硬件和软件呈现。WPF 还要求对内存和执行进行精确控制。milcore 中
的组合引擎受性能影响关系大,需要放弃 CLR 的许多优点来提高性能。
在 WPF 中常用的的控件类继承结构如下图所示:
本文来自网络,由大胡子制作.版权归原作者所有.如果你有 wpf 的好资料可以联系我 QQ:249872349,Email:BigBeard@126.com
System.Object 类:在.Net 中所有类型的根类型
System.Windows.Threading.DispatcherObject 类:WPF 中的大多数对象是从 Dispa
tcherObject 派生的,这提供了用于处理并发和线程的基本构造。WPF 基于调度程序实现
的消息系统。
System.Windows.DependencyObject 类:表示一个参与依赖项属性系统的对象。
System.Windows.Media.Visual 类:为 WPF 中的呈现提供支持,其中包括命中测试、坐
标转换和边界框计算。
System.Windows.UIElement 类:UIElement 是 WPF 核心级实现的基类,该类建立在
Windows Presentation Foundation (WPF) 元素和基本表示特征基础上。
System.Windows.FrameworkElement 类:为 Windows Presentation Foundation
(WPF) 元素提供 WPF 框架级属性集、事件集和方法集。此类表示附带的 WPF 框架级实
现,它是基于由 UIElement 定义的 WPF 核心级 API 构建的。
System.Windows.Controls.Control 类:表示 用户界面 (UI) 元素的基类,这些元素使
用 ControlTemplate 来定义其外观。
System.Windows.Controls.ContentControl 类:表示包含单项内容的控件。
System.Windows.Controls.ItemsControl 类:表示一个可用于呈现项的集合的控件。
System.Windows.Controls.Decorator 类:提供在单个子元素(如 Border 或 Viewbo
x)上或周围应用效果的元素的基类。
System.Windows.Controls.Image 类:表示显示图像的控件。
System.Windows.Controls.MediaElement 类:表示包含音频和/或视频的控件。
System.Windows.Controls.Panel 类:为所有 Panel 元素提供基类。使用 Panel 元素
在 Windows Presentation Foundation (WPF) 应用程序中放置和排列子对象。
System.Windows.Sharps.Sharp 类:为 Ellipse、Polygon 和 Rectangle 之类的形状
元素提供基类。
详细的有关 WPF 的控件类及其使用请参考 MSDN 文档。
本文来自网络,由大胡子制作.版权归原作者所有.如果你有 wpf 的好资料可以联系我 QQ:249872349,Email:BigBeard@126.com
WPF 应用程序管理
一、WPF 应用程序由 System.Windows.Application 类进行管理
无内容.
二、创建 WPF 应用程序
创建 WPF 应用程序有两种方式:
1、Visual Studio 和 Expression Blend 默认的方式,使用 App.xaml 文件定义启动应用
程序
App.xaml 文件的内容大致如下:
1:
5:
6:
7:
其中 StartupUri 指定启动的 WPF 窗体
2、可以自已定义类,定义 Main 方法实现对 WPF 应用程序的启动
在项目中添加一个类,类的代码如下,在项目选项中,设定此类为启动项。
1: using System;
2: using System.Windows;
3:
4: namespace WpfApplicationLifeCycle
5: {
6: public class MainClass
7: {
8: [STAThread]
9: static void Main()
10: {
11: // 定义 Application 对象
12: Application app = new Application();
本文来自网络,由大胡子制作.版权归原作者所有.如果你有 wpf 的好资料可以联系我 QQ:249872349,Email:BigBeard@126.com
13:
14: // 方法一:调用 Run 方法,参数为启动的窗体对象
15: Window2 win = new Window2();
16: app.Run(win);
17:
18: // 方法二:指定 Application 对象的 MainWindow 属性为启动窗体,
调用无参数的 Run 方法
19: //Window2 win = new Window2();
20: //app.MainWindow = win;
21: //win.Show(); // 此处必须有 win.Show(),否则不能
显示窗体
22: //app.Run();
23:
24: // 方法三:
25: //app.StartupUri = new Uri("Window2.xaml", UriKind.R
elative);
26: //app.Run();
27: }
28: }
29: }
三、应用程序关闭
应用程序关闭时的策略由 ShutdownMode 属性指定,其类型为 System.Window
s.ShutdownMode 枚举类型,其枚举成员有:
OnLastWindowClose(默认值):当应用程序中的最后一个窗体关闭时或调用 Applic
ation 对象的 Shutdown()方法时,应用程序关闭;
OnMainWindowClose:当主窗体(即启动窗体)关闭时或调用 Application 对象的 S
hutdown()方法时,应用程序关闭。(类似于 C#的 Windows 应用程序的关闭模式);
OnExplicitShutdown:只有在调用 Application 对象的 Shutdown()方法时,应用
程序才会关闭;
更改的时候,可以直接在 App.xaml 中更改:
本文来自网络,由大胡子制作.版权归原作者所有.如果你有 wpf 的好资料可以联系我 QQ:249872349,Email:BigBeard@126.com
1:
6:
7:
8:
也可以在代码文件(App.xaml.cs)中更改
1: Application app = new Application();
2: Window2 win = new Window2();
3:
4: // 更改关闭模式必须要在调用 app.Run()方法之前
5: app.ShutdownMode = ShutdownMode.OnExplicitShutdown;
6: app.Run(win);
四、Application 对象的事件
名称
说明
Activated
Deactivated
当应用程序成为前台应用程序时发生。
当应用程序停止作为前台应用程序时发生。
DispatcherUnhandledException 在异常由应用程序引发但未进行处理时发生。
Exit
恰好在应用程序关闭之前发生,且无法取消。
FragmentNavigation
LoadCompleted
Navigated
Navigating
NavigationFailed
NavigationProgress
当应用程序中的导航器开始导航至某个内容片断时发生,
如果所需片段位于当前内容中,则导航会立即发生;或者,
如果所需片段位于不同内容中,则导航会在加载了源
XAML 内容之后发生。
在已经加载、分析并开始呈现应用程序中的导航器导航到
的内容时发生。
在已经找到应用程序中的导航器要导航到的内容时发生,
尽管此时该内容可能尚未完成加载。
在应用程序中的导航器请求新导航时发生。
在应用程序中的导航器在导航到所请求内容时出现错误
的情况下发生。
在由应用程序中的导航器管理的下载过程中定期发生,以
提供导航进度信息。
本文来自网络,由大胡子制作.版权归原作者所有.如果你有 wpf 的好资料可以联系我 QQ:249872349,Email:BigBeard@126.com
NavigationStopped
SessionEnding
在调用应用程序中的导航器的 StopLoading 方法时发
生,或者当导航器在当前导航正在进行期间请求了一个新
导航时发生。
在用户通过注销或关闭操作系统而结束 Windows 会话
时发生。
Startup
在调用 Application 对象的 Run 方法时发生。
应用程序的事件处理可以:
1、在 App.xaml 中做事件的绑定,在 App.xaml.cs 文件中添加事件的处理方法
在 App.xaml 文件中:
1:
6:
7:
8:
在 App.xaml.cs 文件中:
1: using System.Windows;
2:
3: namespace WpfApplicationLifeCycle
4: {
5: ///
6: /// Interaction logic for App.xaml
7: ///
8: public partial class App : Application
9: {
10: private void Application_Startup(object sender, Startup
EventArgs e)
11: {
12: // 定义应用程序启动时要处理的内容
13: }
14: }
15: }
2、在自定义的类中可以做正常的 C#的事件绑定:
1: [STAThread]
2: static void Main()
3: {