欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C#窗体WPF学习

程序员文章站 2022-06-10 10:57:26
...

在学习之前一定要懂得XML,如果不懂的话可以参阅http://www.w3school.com.cn/xml/index.asp网址上的基于WEB的免费指导。

**
在学习之前,先看一段XAML文档的基本框架,该文档表示一个新的空白窗口(和使用Visual Studio创建的一样)。

**<Window x:Class="EightBall.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Eight Ball Answer" Height="328" Width="412" >
  <Grid>

  </Grid>
</Window>**

这段代码里面包含两个元素,*的Window元素,以及一个Grid的元素,Windos元素代码表整个窗体,在Gird元素中可以放置所有控件。尽管可以使用任何元素为*元素,但是WPF应用程序只是用以下几个元素作为*元素:

  • Windows元素

  • Page 元素(该元素和Windows元素类似,但是它用于可导航的应用程序)

  • Application元素(该元素定义应用程序资源和启动设置)
    与在所有的XML文档中一样,在XAML文档中只有一个*元素,在上面代码里面,只要使用标签关闭了Window元素,整个文档就结束了,在后面不能再有任何内容了。
    这段代码里面,从第一行Window标签开始还包括:类名和两个XML名称空间,一个标题Title。
    Title=“Eight Ball Answer” Height=“328” Width=“412” > 创建一个标题,并且使窗体大小为328*412像素。

    通过XAML构造界面,为了使应用程序具有一定的功能,需要一个连接包含程序的事件处理处理程序的方法。
    <Window x:Class=“EightBall.Window1”
    显然,光有这个类名是不够.XAML解析器还需要知道类位于哪个名称空间。
    例如:
    在许多名称空间中可能都有Window类,——Windos类可能是指System.Windows.Window类,也可能是指位于第三方组件中的Window类,或者是自己在应用程序中定义的Window类等。为了弄清楚实际上希望使用哪个类,XAML解析器会检查应用于元素的XML名称空间。
    下面这一机制的工作原理。上面显示的代码定义了两个命名空间:
    xmlns=“http://schemas.microsoft.com/winfx/2006/xaml/presentation
    xmlns:x=“http://schemas.microsoft.com/winfx/2006/xaml

| 注意:| XML名称空间使用特性声明。这些特性能够被放入到任何元素的开始标签中。但是,约定要求在文档中需要使用的所有名称空间应当在第一个标签中声明,正如在这个代码中所做那样。一旦声明了一个明明空间,在文档任何地方都可以使用改名空间。|

xmlns特性是XML中的一个特殊的特性,它专门用于声明名称空间。这段标签声明两个名称空间,在创建的所有WPF XAML文档中都会使用这两个名称空间:
http://schemas.microsoft.com/winfx/2006/xaml/presentation 是WPF核心名称空间。它包含了所有WPF类,包括用于构建界面的控件。在这个标签中,该名称空间的声明没有使用名称前缀,所以它成为整个文档的默认名称空间。换就话说,除非另行指明,每个元素自动位于中这个名称空间。

   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  是XAML名称空间。包含各种XAML实用特性,这些特性会影响文档的解释方式。
   这个名称空间被映射为前缀x。这意味着可以通过在元素名称之前放置一个名称空间前缀来使用这个名称空间(x:ElementName)。

在XAML名称空间的Class特性之前放置了名称空间前缀x,意味着这是XAML语言中更通用的部分。实际上,Class特性告诉XAML解析器使用指定的名称生成一个新类, 该类继承*XML元素命名的类。换句话说,这个<Window x:Class=“EightBall.Window1” 标签创建了一个名为Window1的新类,该类继承自Window基类。
Window1类是在编译时自动生成。 这正是问题的关键所在。
Visual Studio 会自动创建一个科院放置时间处理代码的部分类。例如,如果创建一个名为WinowsApplication1的应用程序,该应用程序包含一个名为Window1的窗口,Visual Studio将首先提供一个基本的类框架:

namespace WindowsApplication1
{
		public partial class Window1 : Window
		{
			public Window1()
			{
					InitializeComponent();		
			}
		}
}

当编译应用程序时,定义界面的XAML(Window1.xaml)被转换位CLR类型声明,这些类型声明和代码隐藏类文件(Window1.xaml.cs)中的逻辑代码融合到一起,形成单一的单元。

相关标签: C# WPF