Windows Presentation Foundation (WPF) 是下一代显示系统,用于生成能带给用户震撼视觉体验的Windows 客户端应用程序。使用 WPF,您可以创建广泛的独立应用程序以及浏览器承载的应用程序。 



 



    WPF 的核心是一个与分辨率无关并且基于向量的呈现引擎,旨在利用现代图形硬件的优势。WPF通过一整套应用程序开发功能扩展了这个核心,这些功能包括 可扩展应用程序标记语言 (XAML)、控件、数据绑定、布局、二维和三维图形、动画、样式、模板、文档、媒体、文本和版式。WPF包含在 Microsoft .NET Framework 中,使您能够生成融入了 .NET Framework 类库的其他元素的应用程序。 



 



    为了支持某些更强大的 WPF 功能并简化编程体验,WPF 包括了更多编程构造,这些编程构造增强了属性和事件:依赖项属性和路由事件。有关依赖项属性的更多信息,请参见依赖项属性概述。有关路由事件的更多信息,请参见路由事件概述。 



 



    这种外观和行为的分离具有以下优点: 



 



    1 降低了开发和维护成本,因为外观特定的标记并没有与行为特定的代码紧密耦合。 



 



    2 开发效率更高,因为设计人员可以在开发人员实现应用程序行为的同时实现应用程序的外观。 



 



    3 可以使用多种设计工具实现和共享 XAML 标记,以满足应用程序开发参与者的要求:Microsoft Expression Blend 提供了适合设计人员的体验,而 Visual Studio 2005 针对开发人员。 



 



    4 WPF 应用程序的全球化和本地化大大简化(请参见 WPF 全球化和本地化概述)。 



 



    在运行时,WPF  将标记中定义的元素和属性转换为 WPF  类的实例。例如,Window  元素被转换为 Window  类的实例,该类的 Title  属性 (Property)  是 Title  属性(Attribute)  的值。 



 



    注意在 constructor 中 Call:  InitializeComponent(); 



 



    x:Class 属性用于将标记与代码隐藏类相关联。



 



    InitializeComponent 是从代码隐藏类的构造函数中调用的,用于将标记中定义的UI 与代码隐藏类相合并。(生成应用程序时将为您生成 InitializeComponent,因此您不需要手动实现它。)x:Class 和 InitializeComponent 的组合确保您的实现无论何时创建都能得到正确的初始化。 



 



    .NET Framework 、System.Windows、标记和代码隐藏构成了 WPF 应用程序开发体验的基础窗口: WPF 对话框: MessageBox 、OpenFileDialog 、SaveFileDialog 和 PrintDialog。 



 



    WPF 提供了以下两个选项作为替代导航宿主: 



 



    1 Frame,用于承载页面或窗口中可导航内容的孤岛。 



 



    2 NavigationWindow,用于承载整个窗口中的可导航内容。 



 



    启动:StartupUri="MainWindow.xaml" />此标记是独立应用程序的应用程序定义,并指示 WPF 创建一个在应用程序启动时自动打开 MainWindow 的 Application 对象。 



 



    WPF 控件一览 



 



    此处列出了内置的 WPF 控件。 



 



        按钮:Button 和 RepeatButton。 



 



        对话框:OpenFileDialog 、PrintDialog 和 SaveFileDialog。 



 



        数字墨迹:InkCanvas 和 InkPresenter。 



 



        文档:DocumentViewer  、FlowDocumentPageViewer  、FlowDocumentReader 、FlowDocumentScrollViewer 和 StickyNoteControl。 



 



        输入:TextBox  、RichTextBox 和 PasswordBox。 



 


        布局:Border 、BulletDecorator  、Canvas  、DockPanel 、Expander  、Grid 、GridView 、GridSplitter、GroupBox 、Panel  、ResizeGrip  、Separator 、ScrollBar 、ScrollViewer 、StackPanel  、Thumb  、Viewbox、VirtualizingStackPanel 、Window 和 WrapPanel。 



 



        媒体:Image  、MediaElement 和 SoundPlayerAction。 



 



        菜单:ContextMenu 、Menu 和 ToolBar。 



 



        导航:Frame  、Hyperlink 、Page 、NavigationWindow 和 TabControl。 



 



        选择:CheckBox  、ComboBox 、ListBox 、TreeView 、RadioButton 和 Slider。 



 



        用户信息:AccessText 、Label  、Popup 、ProgressBar 、StatusBar 、TextBlock 和 ToolTip。 



 



    输入和命令 :控件通常检测和响应用户输入。WPF输入系统使用直接事件和路由事件来支持文本输入、焦点管理和鼠标定位。有关更多信息,请参见输入概述。 



 



 



    布局系统的基础是相对定位,它提高了适应窗口和显示条件变化的能力。此外,布局系统还管理控件之间的协商以确定布局。协商过程分为两步:第一步,控件向父控件通知它所需的位置和大小;第二步,父控件通知该控件它可以具有多大空间。



 



        Canvas:子控件提供其自己的布局。 



 



        DockPanel:子控件与面板的边缘对齐。 



 



        Grid:子控件按行和列放置。 



 



        StackPanel:子控件垂直或水平堆叠。 



 



        VirtualizingStackPanel:子控件被虚拟化,并沿水平或垂直方向排成一行。 



 



        WrapPanel:子控件按从左到右的顺序放置,如果当前行中的控件数多于该空间所允许的控件数,则换至下一行由父控件实现的、供子控件使用的属性是一种 WPF 构造,称为 "附加属性" 。



 



        为了简化应用程序开发,WPF 提供了一个数据绑定引擎以自动执行这些步骤。数据绑定引擎的核心单元是 Binding 类,它的任务是将控件(绑定目标)绑定到数据对象(绑定源)。下图说明了这种关系。 



 



 



    注:这里贴出来的是WPF的初次认识,由于该总结长达134页,这里就不全部贴出来了,后面的内容更为深入,如需了解请下载到本地来仔细研究吧。

转载于:https://blog.51cto.com/xiaoyaosr/411932