1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
WPF学习

WPF 的核心是一个与分辨率无关并且基于向量的呈现引擎,旨在利用现代图形硬件的优势。WPF 通过一整套应用程序开发功能扩展了这个核心,这些功能包括可扩展应用程序标记语言 (XAML)、控件、数据绑定、布局、二维和三维图形、动画、样式、模板、文档、媒体、文本和版式。WPF 包含在 Microsoft .NET Framework 中,使您能够生成融入了 .NET Framework 类库的其他元素的应用程序。代码隐藏:应用程序的主要行为是实现响应用户交互的功能,包括处理事件(如,单击菜单、工具栏或按钮),并调用业务逻辑和数据访问逻辑作为响应。 在 WPF 中,此行为通常在与标记关联的代码中实现。 此类代码称为“代码隐藏”。比如说:在此示例中,代码隐藏实现一个从 /zh-cn/library/vstudio/system.windows.window.aspxWindow 类派生的类。 x:Class 特性用于将标记与代码隐藏类相关联。 InitializeComponent 是从代码隐藏类的构造函数中调用的,用于将标记中定义的 UI 与代码隐藏类相合并。 (生成应用程序时将为您生成 InitializeComponent,因此您不需要手动实现它。)x:Class 和 InitializeComponent 的组合确保您的实现无论何时创建都能得到正确的初始化。 代码隐藏类还为按钮的 /zh-cn/library/vstudio/system.windows.controls.primitives.buttonbase.click.aspxClick 事件实现了一个事件处理程序。 当单击该按钮时,事件处理程序将通过调用 /zh-cn/library/vstudio/system.windows.messagebox.show.aspxMessageBox.Show 方法显示一个消息框。 数据绑定:创建大多数应用程序的目的是为用户提供查看和编辑数据的方式。 对于 WPF 应用程序,存储和访问数据的工作已经由 Microsoft SQL Server 和 ADO.NET 之类的技术提供。 访问数据并将数据加载到应用程序的托管对象中后,WPF 应用程序的复杂工作才开始。 实质上它涉及到两个步骤: 1.将数据从托管对象复制到控件中,在控件上可以显示和编辑数据。 2.确保将使用控件对数据进行的更改复制回托管对象。 为了简化应用程序开发,WPF 提供了一个数据绑定引擎以自动执行这些步骤。数据绑定引擎的核心单元是 Binding 类,它的任务是将控件(绑定目标)绑定到数据对象(绑定源)。 下图说明了这种关系。 事件和委托 在几个WPF桌面应用系统开发中经常会用到委托,在这里稍微总结一下。主要应用: 1.线程间的访问 2.自定义事件线程间的访问: 在多线程编程中,我们经常会需要在子线程中访问主线程的内容,特别是更改主窗体的UI界面内容,如果直接访问跨线程资源,系统就会报线程访问错误. 在WinForm中窗体类提供了Invoke方法以从子线程中访问主线程资源. 在WPF中Window类并没有Invoke方法,但是WPF提供了专门负责线程调度工作的Window.Dispatcher类,每个线程都有一个,我们在一个线程中要让另一个线程做事情,其实就是调用目标Dispatcher调度完成. 在WPF中使用委托访问主线程的代码如下: private delegate void DelegateShowMessage(string msg);//定义委托 private void ShowMessageInvoke(string msg)//委托访问接口 { DelegateShowMessage d = ShowMessage; this.Dispatcher.Invoke(d); } private void ShowMessage(string msg)//要让主线程完成的事情 { txtMsg.Text = msg; } 这样,在子线程中直接调用ShowMessageInvoke方法就可以了. 上面代码中的this.Dispatcher就是主线程的线程调度员.我们在自定义一个WPF控件的时候,也可以使用这一方法. Dispatcher除了使用Invoke方法调用委托之外,还可以使用BeginInvoke方法,区别在于BeginInvoke是异步执行的. 另外,在没有Dispatcher属性的类中也可以使用Application.Current.Dispacther,它与this.Dispatcher是一样的.?自定义事件: 自定义事件代码如下: public delegate void OnHaveReceDataDelegate(int lengt

文档评论(0)

sd44055 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档