首先,在工程中创建一个XML文件,可以取名为app.config。 记得放在工程的根目录,方便后面设置路径。把Build Action设成Resource,关于Build Action的说明可以在这里找到。 随便在app.config中写点东西 <?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="name" value="srzhz"/> <add key="university" value="Tsinghua University"/> </appSettings> </configuration> 然后要开始创建这个ConfigurationManager类了。 首先在工程上按右键点击Add Reference,之后选择System.Xml.Linq。(如果没加的话无法引入命名空间System.Xml.Linq) 然后在ConfigurationManager类中写入如下代码 using System; using System.Windows; using System.Collections.Generic; using System.Windows.Resources; using System.IO; using System.Xml.Linq; using System.Reflection; namespace Model { /// <summary> /// Access appSettings from a configuration file /// </summary> /// <remarks>Your appConfig file must be in the root of your applcation</remarks> public static class ConfigurationManager { static ConfigurationManager() { AppSettings = new Dictionary<string, string>(); ReadSettings(); } public static Dictionary<string, string> AppSettings { get; set; } private static void ReadSettings() { // Get the name of the executing assemby - we are going to be looking in the root folder for // a file called app.config string assemblyName = Assembly.GetExecutingAssembly().FullName; assemblyName = assemblyName.Substring(0, assemblyName.IndexOf(',')); string url = String.Format("{0};component/app.config", assemblyName); StreamResourceInfo configFile = Application.GetResourceStream(new Uri(url, UriKind.Relative)); if (configFile != null && configFile.Stream != null) { Stream stream = configFile.Stream; XDocument document = XDocument.Load(stream); foreach (XElement element in document.Descendants("appSettings").DescendantNodes()) { AppSettings.Add(element.Attribute("key").Value, element.Attribute("value").Value); } } } } } 之后你就可以通过调用这个类来获得配置信息了。例如: String name = ConfigurationManager.AppSettings["name"];
Build Action为Content的文件读取方式为:
//Uri uri = new Uri("/SilverlightApplication7;component/remark.txt", UriKind.Relative);
Uri uri = new Uri("app.config", UriKind.Relative); StreamResourceInfo sri = Application.GetResourceStream(uri); System.IO.StreamReader reader = new System.IO.StreamReader(sri.Stream); MessageBox.Show(reader.ReadToEnd());