XAML开发入门之创建XAML应用程序

简介:
虽然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属性指定了命名空间。注意这个属性是必需的,而且其属性值必须为 [url]http://schemas.microsoft.com/developer/msbuild/2003[/url]。我们在前面提及过, 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" />
  现在通过一个完整的步骤来创建并生成上述的WPF程序,以便你可以快速地进入学习XAML的历程。

   1、首先我们在创建一个目录,在这里D盘上创建了一个FirstDemo文件夹,而后通过"开始"-"所有程序"-"附件"-"记事本"打开记事本程 序,并将程序代码2-1输入到记事本中。使用"文件"-"保存"命令将该文件保存到FirstDemo文件夹中,在弹出的"另存为"对话框,我们将保存类 型设置为"所有文件",并在文件名处填上"MyApp.xaml"。如下图所示

20061111101905313.jpg

   2、再在记事本中分别创建和保存Page1.xaml页面,其实现的方式和MyApp.xaml相同。现在我们要创建一个工程文件,由于本章中的所有示 例都是采用C#进行代码逻辑的编写,所以我们创建的工程名称为"firstdemo.csproj"。创建上述的3个文件后,FirstDemo文件夹中 的内容如下图所示。

20061111101905404.jpg

   3、现在我们要使用MSBuild将这些文件生成一个WPF程序,为此,我们可以通过"开始"-"所有程序"-"Microsoft Windows SDK"-"CMD"打开MSBuild控制台窗口,默认状态我们所处目录是Windows SDK的安装路径。如果要使用MSBuild来执行firstdemo.csproj文件,我们必须转到"D:\FirstDemo"路径中,为此,我们 可以在光标处输入"CD \"返回到D盘根目录,而后再通过"CD FirstDemo"命令进入"D:\FirstDemo"路径。具体的实现图如下

20061111101907734.jpg
4、通过"DIR"命令可以查看当前目录中的各个文件,如图所示

20061111101908430.jpg

5、现在我们就可以通过msbuild命令来执行firstdemo.csproj文件,直接在光标处输入"msbuild firstdemo.csproj"命令。生成成功后的显示如下:

20061111101908201.jpg

6、打开FirstDemo文件夹,可以看到其包含的文件方式了一些改变,我们可以直接双击MyFirstApplication.exe来运行这个生成后的WPF程序。

7、该WPF程序最终的呈现效果如下图所示,

20061111101909503.jpg

和XAML的呈现效果比较,发现它们是不是和一样呢?在上图我们可以看到窗体的上方有两个类似浏览器"前进"和"后退"的按钮,这表明该WPF是一个宿 主于浏览器的呈现。如果你将Pgae1.xaml的根元素Page改为Window,执行生成该程序,你将发现最后不再是在浏览器中进行呈现。其效果如下 所示:

20061111101909180.jpg

也就是说我们可以在一个XAML文件中设置其根元素,如果为Page,表示它将宿主于浏览器。若为Window的话,则是和传统的桌面程序那样直接进行呈现。


















本文转自朱先忠老师51CTO博客,原文链接:http://blog.51cto.com/zhuxianzhong/60081 ,如需转载请自行联系原作者


相关文章
|
4月前
|
XML 开发框架 .NET
|
3月前
|
搜索推荐 C# 开发者
3个值得推荐的WPF UI组件库
3个值得推荐的WPF UI组件库
150 0
|
11月前
|
C# C++ Windows
3.只使用代码创建WPF应用程序
3.只使用代码创建WPF应用程序
81 0
|
11月前
|
C#
2.XAML基础
2.XAML基础
76 0
|
11月前
|
C#
4.使用代码和未经编译的XAML创建WPF应用程序
4.使用代码和未经编译的XAML创建WPF应用程序
58 0
|
11月前
|
C#
WPF防止程序多次运行
WPF防止程序多次运行
135 0
|
Shell C# 调度
WPF PRISM开发入门一( 初始化PRISM WPF程序)
原文:WPF PRISM开发入门一( 初始化PRISM WPF程序) 这篇博客将介绍在WPF项目中引入PRISM框架进行开发的一些基础知识。目前最新的PRISM的版本是Prism 6.1.0,可以在Github上获取PRISM的源码。
3607 0
|
C# Windows
使用WPF来创建 Metro UI程序
原文:使用WPF来创建 Metro UI程序 这个是我以前网上看到的一篇文章,原文地址是:Building a Metro UI with WPF,这篇文章一步步的介绍了如何实现一个Metro样式的窗口,并且效果非常好。
1226 0
|
C#
WPF中,怎样将XAML代码加载为相应的对象?
原文:WPF中,怎样将XAML代码加载为相应的对象? 在前面“在WPF中,如何得到任何Object对象的XAML代码?”一文中,我介绍了使用System.Windows.Markup.XamlWriter.Save(objName)得到任何Object对象的XAML代码。
888 0
|
前端开发 C# 程序员
WPF整理-XAML构建后台类对象
原文:WPF整理-XAML构建后台类对象 1.XAML 接触WPF的第一眼就是XAML---XAML是用来描绘界面的。其实不然! "Actually, XAML has nothing to do with UI. It's merely a declarative way of constructing objects and setting their properties.” XAML和UI一点关系也没有,它仅仅是一种以声明方式来构建对象,设置对象属性的一种方式而已,和code behind file作用差不多。
913 0