繁体   English   中英

Silverlight:如何动态创建页面

[英]Silverlight: How to create a page dynamically

问题:我将要在Silverlight中打开的页面名称存储在数据库中。 启动应用程序时,我想将页面设置为此字符串

所以而不是这样:

this.RootVisual = new MainPage();

我想要这样的东西

string pageName = getValueFromDatabase()
if (!PageExists(pageName))
   throw error
else
   this.RootVisual = SomeWizzyMethodToCreatePage(pageName) 

我想我将需要在这里使用反射来查找所有页面(PageExists),然后以某种方式创建一个新实例(SomeWizzyMethodToCreatePage)。

假设你的意思是,你从DB AQUIRE要确定页面中显示的名称的页面的名称

我将以最简单的示例为例,其中所有页面都在一个应用程序程序集和一个已知的名称空间中。 可以这样简单:

Type pageType = Assembly.GetExecutingAssembly().GetType("SilverlightApplication1." + pageName);
RootVisual = (UIElement)Activator.CreateInstance(pageType);

也许更灵活的方法是在数据库中存储AssemblyQualifiedName 这样,页面可以位于不同的程序集和/或名称空间中,只需将其存在于XAP中(我不确定它是否可以存在于缓存的程序集zip中)。 如果页面名称是AssemblyQualifiedName则代码变为:-

Type pageType = Type.GetType(pageName);
RootVisual = (UIElement)Activator.CreateInstance(pageType);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM