using System; using System.IO; using System.Reflection; using System.Windows.Markup; using System.Xml; namespace Caliburn { public static class Element { public static T FromFile(string relativePath) { string filePath = Path.Combine( AppDomain.CurrentDomain.BaseDirectory, relativePath ); using(Stream stream = File.OpenRead(filePath)) { return (T) XamlReader.Load(stream); } } public static T FromResource(string resourceName) { Assembly callingAssembly = Assembly.GetCallingAssembly(); return FromResource(callingAssembly, resourceName); } public static T FromResource(Assembly assembly, string resourceName) { using(Stream stream = assembly.GetManifestResourceStream(resourceName)) { return (T) XamlReader.Load(stream); } } public static T FromXaml(string xaml) { return (T) XamlReader.Load( XmlReader.Create( new StringReader(xaml) ) ); } public static T FromXaml(Stream xamlStream) { return (T) XamlReader.Load(xamlStream); } } }