2.4.1 应用程序启动设置
在创建好了项目之后,首先移除自动生成的Window1.xaml文件,在解决方案资源管理器中新建一个Windows文件夹,创建一个名为MainInterfaceWindow.xaml的WPF窗口。打开App.xaml文件,在VS 2008提供的XAML代码编辑窗口中,将StartupUri指定为MainInterface Window.xaml,这样就指定了MyFriends应用程序的主窗口。
在App.xaml中,还进行了一些其他的设置,XAML代码如下所示。
代码位置:见光盘中本章源代码的App.xaml文件。
01 <!--指定主窗口,定义各种应用程序事件--> 02 <Application 03 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 04 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 05 x:Class="MyFriends.App" 06 StartupUri="Windows/MainInterfaceWindow.xaml" 07 Exit="Application_Exit" 08 Startup="Application_Startup"> 09 <Application.Resources> 10 <!--定义应用程序级别的资源字典--> 11 <ResourceDictionary> 12 <ResourceDictionary.MergedDictionaries> 13 <ResourceDictionary Source="Resources/Templates.xaml"/> 14 <ResourceDictionary Source="Resources/Styles.xaml"/> 15 </ResourceDictionary.MergedDictionaries> 16 </ResourceDictionary> 17 </Application.Resources> 18 </Application>
● 第02~08行代码指定了StartupUri属性,且为应用程序的Exit和Startup事件指定了事件处理代码。Exit是应用程序退出时的事件处理代码,关联了位于后置类中的Application_Exit,Startup是应用程序启动时触发的事件,关联到Application_Startup事件。
● 第11~16行代码定义了两个应用程序级的资源字典,将在本章后面进行详细讨论。
Startup事件进行了一些初始化的操作,该事件处理代码将为应用程序要使用的一些全局变量赋值,主要是通过将一些路径信息保存到全局应用程序属性集合中来实现的,代码如下所示。
代码位置:见光盘中本章源代码的App.xaml.cs文件。
01 private void Application_Startup(object sender, StartupEventArgs e) 02 { 03 //初始化全局应用程序属性 04 Application.Current.Properties["SavedDetailsFileName"]=xmlFilename; //保存文件名 05 Application.Current.Properties["FullXmlPath"] = //完整的XML路径 06 Path.Combine(Environment.CurrentDirectory, xmlFilename); 07 Application.Current.Properties["SaveFolder"] = //保存位置 08 Environment.CurrentDirectory; 09 Application.Current.Properties["SelectedDisplayStyle"] = //默认的显示风格 10 DisplayStyle.GrowShrink; 11 if (Directory.Exists(@"C:\WINDOWS\Web\Wallpaper")) 12 //设置默认的选择图片路径的文件夹 13 Application.Current.Properties["SelectedImagePath"] =@"C:\WINDOWS\ Web \Wallpaper"; 14 else 15 Application.Current.Properties["SelectedImagePath"] = @"C:\"; 16 //设置免费的Exceed的Grid的授权序列号,需要将这里更改为自己的序列号 17 Xceed.Wpf.DataGrid.Licenser.LicenseKey="DGP30-E852N-G9C6E-DW5A"; 18 //返回一个FriendsList对象的实例 19 FriendsList.Instance(); 20 }
● 第04~15行代码都在为Application对象的Properties集合添加键值对,Properties集合中保存了将用于保存联系人信息的XML文件名称、完整的XML文件路径。将要保存的文件夹、默认的显示风格以及默认的图片文件文件夹,保存在全局属性集合中以便于维护和修改。
● 第17行代码为Xceed的DataGrid指定授权序列号,读者运行自己的程序时,可能要根据需要修改这里的序列号。
● 第19行代码实例化了单件类FriendsList,使得启动时便能从XML文件加载联系人对象到内存集合中。
Exit事件在应用程序退出时触发,该事件将会保存所有的联系人信息到XML文件中,代码如下所示。
代码位置:见光盘中本章源代码的App.xaml.cs文件。
01 private void Application_Exit(object sender, ExitEventArgs e) 02 { 03 try 04 { 05 XMLFileOperations.SaveOnExit(); //方法将当前的所有联系人保存到XML文件中 06 } 07 catch 08 { 09 MessageBox.Show("保存文件时失败!"); //如果保存失败,显示失败信息 10 } 11 }
● 第05行代码调用XMLFileOperations类的SaveOnExit方法,将当前的所有联系人列表保存到XML文件中去。XMLFileOperations是本系统中一个集中操作XML文件的类,它使用XLINQ来读取和保存XML文件,修改XML文件等。在本章后面的内容中将会详细介绍。