XAML 文件的创建

XAML 文件的创建,第1张

虽然XAML可以创建一个类库和模块供其它的程序使用(有点类似于用C#或者VB.NET等语言创建一个DLL程序集,供其它的程序使用)

但是我们还是经常直接使用XAML来构建用户界面。

一般来说,XAML应用程序有两种类型,分别为eXPRess和installed。

Express应用程序通常宿主于一个Web浏览器中,也就是说在浏览器中以Web页面类似的形式进行呈现的。

而Installed应用程序就和传统的桌面程序非常类似,包括控制台程序和窗体程序两种形式。

由于我们在这里是以手动的方式创建一个WPF程序,所以我们无法直接使用WinFX Extensions to Visual Studio 2005提供的模板创建特定类型的XAML程序。

为此,我们要通过手动的方式创建一个特定类型的XAML应用程序,我们还要创建对应的项目文件,并在该项目文件中指定要创建的应用程序类型。

MSBuild是Vista和Visual Studio 2005中一项新的特性,伴随着Visual Studio 2005的发布,就标志着微软已经迁移到新一代的统一生成平台。

现在所有的项目都可以很轻松地通过MSBuild生成.NET程序集。更加激动人心和有益的是,在编译和生成一个应用程序时,并不需要Visual Studio 2005作为必需的支持,我们完全可以采用MSBuild生成应用程序。

假如你安装了Windows SDK的话,MSBuild也会发布到你的计算机中。

提示:假如使用Visual Studio 2005创建一个XAML应用程序的话,那么你完全不用理会MSBuild生成应用程序的具体细节。Visual Studio 2005将会自动地为该XAML程序创建一个项目文件, 而后MSBuild将按照这个项目文件指定的方式进行工作。

提示:可以通过"开始"-"所有程序"-"Microsoft Windows SDK"-"CMD"打开MSBuild控制台窗口。你可以在命令提示符中输入"msbuild /help"查看所有与MSBuild相关的命令。

MSBuild会读取一个基于xml的、扩展名为.csproj或vbcsproj的项目文件,并按照该项目文件指定的方式,生成相应的可执行程序。在项目文件中包含一系列的XML元素,我们在这里只介绍一些重要的XML元素和它们的对应设置。各个XML元素的描述如下:

Project 所有的项目文件都必需的根元素

PropertyGroup 包含一些项目属性的设置,例如我们在生成一个项目时是采用Debug方式还是Release方式。

ItemGroup 包含一系列的项目,用来指定组成该项目的代码文件或资源文件。

Import 答应你导入其它的一些项目文件,例如将一些目标文件导入到某项目文件中

我们可以有很多方式为MSBuild配置对应的项目文件,当然最便捷的方法就是直接使用Visual Studio 2005,它会自动地生成相应的项目文件。下面是一个最简单的项目文件示例,其代码如下:

01 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

02 <PropertyGroup>

03 <AssemblyName>MyFirstapplication</AssemblyName>

04 <TargetType>winexe</TargetType>

05 <Configuration>Release</Configuration>

06 <OutputPath>.\</OutputPath>

07 </PropertyGroup>

08 <ItemGroup>

09 <Reference Include="System" />

10 <Reference Include="WindowsBase" />

11 <Reference Include="PresentationCore" />

12 <Reference Include="PresentationFramework" />

13 </ItemGroup>

14 <ItemGroup>

15 <ApplicationDefinition Include="MyApp.xaml" />

16 <Page Include="Page1.xaml" />

17 </ItemGroup>

18 <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />

19 <Import Project="$(MSBuildBinPath)\Microsoft.WinFX.targets" />

20 </Project>

上述的项目文件中,我们在第1行使用了Project元素了,并为其xmlns属性指定了命名空间。注重这个属性是必需的,而且其属性值必须为http://schemas.microsoft.com/developer/msbuild/2003。

我们在前面提及过,PropertyGroup中包含一些项目属性的设置,例如在第3行代码中,我们使用AssemblyName元素来设置MSBuild产生最终的可执行程序名,第4行代码使用TargetType元素指定生成的程序类型,我们可以在<TargetType>…</TargetType>之间设置4种不同的值,在本例中为"winexe",表明生成的目标程序类型是一个图形化程序(不是控制台程序,可以为窗体形式,也可以为浏览器形式)。假如将其值设置为"exe",则生成的是一个控制台程序。

"Library"是一个DLL程序集,"Netmodule"生成的则是一个程序集中的模块。第5行代码中的Configuration元素是一个可选项,假如想使用debug生成方式的话,可以将其设置为"debug",默认的生成方式为"Release"。

第6行代码中的OutputPath元素用来指定生成文件存放的文件夹,而本例中的".\"表示生成的文件将直接生成在根目录下。

第9到13行的<ItemGroup>…</ItemGroup>中包含4个Reference元素,在这里我们可以使用"Include"属性来语言一个动态链接库文件,而"System"、"WindowsBase"等就是这些DLL文件的名称,这些动态链接库文件中包含了WPF中所有的核心类。

第14到17行的<ItemGroup>…</ItemGroup>中,我们使用ApplicationDefinition元素的"Include"属性指定该XAML程序的应用程序定义文件为"MyApp.xaml"。

使用Page元素的"Include"属性指定该XAML程序中使用到的XAML页面文件(假如该XAML页面还包含代码后置文件的话,那么还必须使用Compile属性指定对应的代码后置文件)。

最后要注重的就是第18、19代码所使用的Import元素,该元素答应你包含其它的项目文件,其中该元素的Project属性是必选的,用来指定所要包含的项目文件。

一般情况下,我们通常使用Import元素来导入标准的目标文件,其中一个是Microsoft.WinFX.targets,另外一个则是和适当的语言相关的目标文件-Microsoft.CSharp.targets或Microsoft.VisualBasic.targets。大多数的WPF程序在生成时都需要上述两个文件中定义的目标。

对一个C#的项目来说,标准的Import语句如下:

01 <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />

02 <Import Project="$(MSBuildBinPath)\Microsoft.WinFX.targets" />

而对一个VB.NET项目来说,标准的Import语句如下:

01 <Import Project="$(MSBuildBinPath)\Microsoft.VisualBasic.targets" />

02 <Import Project="$(MSBuildBinPath)\Microsoft.WinFX.targets" /> QQRead.com 推出数据恢复指南教程 数据恢复指南教程 数据恢复故障解析 常用数据恢复方案 硬盘数据恢复教程 数据保护方法 数据恢复软件 专业数据恢复服务指南

现在我们已创建了一个自定义用户控件,并为其添加了一些绝妙的外观状态。现在,我们会将该自定义控件放入我们的主页中并添加一些按钮。然后,我们还将演示如何在 Embedded XAML Runtime 中链接这些按钮,并且让该项目在运行 CE 6.0 的嵌入式设备上运行。 1. 在 LayoutRoot 页面的顶部,您应该看到一个列有“Page.xaml”的选项卡。单击该选项卡打开主页文件。如果看不到该选项卡,可以单击右侧工具箱中的“项目”选项卡,然后通过浏览找到该文件 2. 让我们通过执行与上述自定义圆柱体控件类似的 *** 作来添加渐变,使主页变得更为引人注目 3. 只需在“对象和时间线”工具箱中选择“LayoutRoot”元素,然后单击在屏幕右侧的“属性”选项卡 4. 使用多种不同的渐变和颜色工具来实现您喜欢的背景颜色 5. 那么,现在让我们将自定义控件添加到该页面中 6. 我们需要先快速生成项目,以使自定义控件可以编译成一个资源。为此,转到“项目”->“生成解决方案”菜单项,或者只需单击键盘上的 F5 即可。生成过程将需要一点时间,可能会d出一个 Internet Explorer 窗口。不用理会它,关闭即可 7. 完成此过程后,我们便可以将自定义控件添加到该页面中 8. 在左侧工具面板中单击“资产”按钮 9. 进入“资源库”查看器后,单击“自定义控件”选项卡 10. 将“CylinderUserControl”项拖至您的 LayoutRoot 中 11. 我们需要为我们的元素命名 12. 单击圆柱体,然后在右侧“属性”面板的顶部键入“Cylinder”作为名称 13. 好了!我们仅需向我们的项目中添加三个按钮即可:“填充”按钮、“清空”按钮和“退出”按钮 14. 添加按钮非常简单 15. 在左侧工具栏中单击“按钮”按钮,然后转到您的 LayoutRoot 并拖动,即可在您的项目中创建任意大小的按钮。这样 *** 作三次 16. 现在,再次在左侧工具栏中单击“选择”箭头工具。选择第一个按钮,然后单击右侧面板中的“属性”选项卡(如果它未打开)。在“属性”面板的顶部是“名称”文本框字段。将这些按钮分别命名为“填充”、“清空”和“退出”。另外,您还需编辑每个按钮的“内容”字段,以便按钮显示正确的文本。“内容”字段也位于“属性”面板中 最后一次生成项目并将其保存起来。现在,您已创建了 Embedded XAML Runtime 项目需要的所有 XAML 文件! 现在我们已创建了一个自定义用户控件,并为其添加了一些绝妙的外观状态。现在,我们会将该自定义控件放入我们的主页中并添加一些按钮。然后,我们还将演示如何在 Embedded XAML Runtime 中链接这些按钮,并且让该项目在运行 CE 6.0 的嵌入式设备上运行。 1. 在 LayoutRoot 页面的顶部,您应该看到一个列有“Page.xaml”的选项卡。单击该选项卡打开主页文件。如果看不到该选项卡,可以单击右侧工具箱中的“项目”选项卡,然后通过浏览找到该文件 2. 让我们通过执行与上述自定义圆柱体控件类似的 *** 作来添加渐变,使主页变得更为引人注目 3. 只需在“对象和时间线”工具箱中选择“LayoutRoot”元素,然后单击在屏幕右侧的“属性”选项卡 4. 使用多种不同的渐变和颜色工具来实现您喜欢的背景颜色 5. 那么,现在让我们将自定义控件添加到该页面中 6. 我们需要先快速生成项目,以使自定义控件可以编译成一个资源。为此,转到“项目”->“生成解决方案”菜单项,或者只需单击键盘上的 F5 即可。生成过程将需要一点时间,可能会d出一个 Internet Explorer 窗口。不用理会它,关闭即可 7. 完成此过程后,我们便可以将自定义控件添加到该页面中 8. 在左侧工具面板中单击“资产”按钮 9. 进入“资源库”查看器后,单击“自定义控件”选项卡 10. 将“CylinderUserControl”项拖至您的 LayoutRoot 中 11. 我们需要为我们的元素命名 12. 单击圆柱体,然后在右侧“属性”面板的顶部键入“Cylinder”作为名称 13. 好了!我们仅需向我们的项目中添加三个按钮即可:“填充”按钮、“清空”按钮和“退出”按钮 14. 添加按钮非常简单 15. 在左侧工具栏中单击“按钮”按钮,然后转到您的 LayoutRoot 并拖动,即可在您的项目中创建任意大小的按钮。这样 *** 作三次 16. 现在,再次在左侧工具栏中单击“选择”箭头工具。选择第一个按钮,然后单击右侧面板中的“属性”选项卡(如果它未打开)。在“属性”面板的顶部是“名称”文本框字段。将这些按钮分别命名为“填充”、“清空”和“退出”。另外,您还需编辑每个按钮的“内容”字段,以便按钮显示正确的文本。“内容”字段也位于“属性”面板中 最后一次生成项目并将其保存起来。

XAML 根元素和 xmlns

一个 XAML 文件只能有一个根元素,这样才能成为格式正确的 XML 文件和有效的 XAML 文件。通常,应选择属于应用程序模型一部分的元素(例如,为页面选择 Window 或 Page,为外部字典选择 ResourceDictionary,或为应用程序定义根选择 Application)。下面的示例演示 WPF 页面的典型 XAML 文件的根元素,其中的根元素为 Page。

根元素还包含属性 xmlns 和 xmlns:x。这些属性向 XAML 处理器指明哪些命名空间包含标记将要引用的元素的元素定义。xmlns 属性专门指示默认的 xmlns 命名空间。在默认的 xmlns 命名空间中,可以不使用前缀指定标记中的对象元素。对于大多数 WPF 应用程序方案以及 SDK 的 WPF 部分中给出的几乎所有示例,默认的 xmlns 命名空间均映射为 WPF 命名空间 http://schemas.microsoft.com/winfx/2006/xaml/presentation。xmlns:x 属性指示另外一个 xmlns 命名空间,该命名空间映射 XAML 语言命名空间 http://schemas.microsoft.com/winfx/2006/xaml。在具有此映射的文件的标记中引用时,XAML 规范定义的必需语言组件带有 x: 前缀。使用 xmlns 定义用法范围和映射的这种做法符合 XML 1.0 规范。请注意,xmlns 属性仅在每页的根元素上和应用程序定义上(如果在标记中提供了应用程序定义)才是严格必需的。xmlns 定义将应用于根的所有子元素。(此行为仍然符合 xmlns 的 XML 1.0 规范。)xmlns 属性还允许出现在根下面的其他元素上,并且将应用于定义元素的任何子元素。但是,此用法并不典型,因为频繁定义或重新定义 xmlns 命名空间可能会导致 XAML 标记样式难以阅读。

由于存在属于项目生成文件一部分的配置,因此可以知道 WPF 程序集包含的某些类型支持 WPF 到默认 xmlns 的映射。程序集还映射到目标文件中。因此,为了引用来自 WPF 程序集的 XAML 元素,只需映射 xmlns 即可。对于您自己的自定义程序集,或者除 WPF 之外的程序集,可以将该程序集指定为 xmlns 映射的一部分。通常,可选择其他前缀,但是也可以选择其他 xmlns 作为默认值,然后将 WPF 映射到前缀。

x: 前缀

在前面的根元素示例中,前缀 x: 用于映射 XAML xmlns http://schemas.microsoft.com/winfx/2006/xaml。在此 SDK 的项目模板、示例以及文档中,此 x: 前缀将用于映射 XAML xmlns。x: 前缀/XAML xmlns 包含多个将在 XAML 中频繁用到的编程构造。下面列出了将用到的最常见 x: 前缀/XAML xmlns 编程构造:

x:Key:为 ResourceDictionary 中的每个资源设置一个唯一的键。在应用程序标记中看到的所有 x: 用法中,x:Key 可能占到 90%。

x:Class:向为 XAML 页提供代码隐藏的类指定 CLR 命名空间和类名。必须具有这样一个类才能支持代码隐藏,也正是由于这个原因,即使没有资源,您也几乎总是会看到映射的 x:。

x:Name:处理对象元素后,为运行时代码中存在的实例指定运行时对象名称。在不支持等效的 WPF 框架级Name 属性的情况下命名元素时,可以使用 x:Name。某些动画方案中会发生这种情况。

x:Static:启用一个获取静态值的值引用,该静态值只能是一个 XAML 可设置属性。

x:Type:根据类型名称构造一个 Type 引用。它用于指定采用 Type 的属性 (Attribute),如 Style..::.TargetType,不过在许多情况下属性 (Property) 本身具有字符串到 Type 的转换功能,因此使用 x:Type 是可选的。

x: 前缀/XAML xmlns 中还有其他一些不太常见的编程构造。

事件和 XAML 代码隐藏

大多数 WPF 应用程序都是既包括标记,又包括代码隐藏。在一个项目中,XAML 被编写为 .xaml 文件,而使用 CLR 语言(如 Microsoft Visual Basic .NET 或 C#)编写代码隐藏文件。编译 XAML 文件时,每个 XAML 页的 XAML 代码隐藏文件的位置是通过指定一个命名空间和类作为 XAML 页的根元素的 x:Class 属性来确定的。

在目前已介绍的示例中,您已看到几个按钮,但还没有一个按钮具有任何关联的逻辑行为。为对象元素添加行为的主要应用程序级机制是使用元素类的现有事件,并为在运行时引发该事件时调用的该事件编写特定的处理程序。事件名称以及要使用的处理程序的名称在标记中指定,而实现处理程序的代码在代码隐藏中定义。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11877614.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存