如何列出程序集中的所有XAML页面?
有谁能帮我知道如何列出程序集中的所有XAML页面吗?当然可以使用反射:如何列出程序集中的所有XAML页面?,xaml,windows-phone-7,assemblies,Xaml,Windows Phone 7,Assemblies,有谁能帮我知道如何列出程序集中的所有XAML页面吗?当然可以使用反射: var assembly = Assembly.GetExecutingAssembly(); var pages = assembly.GetTypes().Where(t => t.IsClass && !t.IsAbstract && t.IsSubclassOf(typeof(PhoneApplicationPage))); 当然,使用反射: var assembly = As
var assembly = Assembly.GetExecutingAssembly();
var pages = assembly.GetTypes().Where(t => t.IsClass && !t.IsAbstract && t.IsSubclassOf(typeof(PhoneApplicationPage)));
当然,使用反射:
var assembly = Assembly.GetExecutingAssembly();
var pages = assembly.GetTypes().Where(t => t.IsClass && !t.IsAbstract && t.IsSubclassOf(typeof(PhoneApplicationPage)));
如果要查找编译到xap中的页面,则可以使用如下代码枚举嵌入的xaml:
string assemblyFullName = System.Reflection.Assembly.GetExecutingAssembly().ToString();
string baseName = assemblyFullName.Substring(0, assemblyFullName.IndexOf(",")) + ".g";
ResourceManager manager = new ResourceManager(baseName, System.Reflection.Assembly.GetExecutingAssembly());
var set = manager.GetResourceSet(System.Globalization.CultureInfo.InvariantCulture, true, true);
foreach (DictionaryEntry resource in set)
{
if (resource.Key.ToString().EndsWith(".xaml"))
{
var doc = XDocument.Load(resource.Value as Stream);
if (doc.Root.Name == "{clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone}PhoneApplicationPage")
{
System.Diagnostics.Debug.WriteLine(resource.Key.ToString() + " is a Page");
}
}
}
如果要查找编译到xap中的页面,则可以使用如下代码枚举嵌入的xaml:
string assemblyFullName = System.Reflection.Assembly.GetExecutingAssembly().ToString();
string baseName = assemblyFullName.Substring(0, assemblyFullName.IndexOf(",")) + ".g";
ResourceManager manager = new ResourceManager(baseName, System.Reflection.Assembly.GetExecutingAssembly());
var set = manager.GetResourceSet(System.Globalization.CultureInfo.InvariantCulture, true, true);
foreach (DictionaryEntry resource in set)
{
if (resource.Key.ToString().EndsWith(".xaml"))
{
var doc = XDocument.Load(resource.Value as Stream);
if (doc.Root.Name == "{clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone}PhoneApplicationPage")
{
System.Diagnostics.Debug.WriteLine(resource.Key.ToString() + " is a Page");
}
}
}
这并不是那么容易。从PhoneApplicationPage继承的类不一定是XAML页。它可能恰好是完全用代码实现的,这并不是那么容易。从PhoneApplicationPage继承的类不一定是XAML页。它可能恰好完全在代码中实现。很抱歉,否决票是意外单击。它现在似乎被锁定了,我无法删除它。很抱歉,否决票是意外点击。它现在好像被锁上了,我无法取下它。