我有一个Silverlight应用程序,显示了许多“页面”.每个页面都是一个不同的XAML文件,后面有不同的代码.页面按顺序编号如下:page_1,page_2,page_3,…,Page_n.页面不是静态的,将动态生成.
由于我不知道总页数,我必须使用Dynamic关键字在运行时加载每个页面.我的代码如下工作完美:
Type type = Type.GetType("Pages.Page_" + (index).ToString(),true); dynamic newPage = Activator.CreateInstance(type);
我的问题是我刚刚得知应用程序必须是Silverlight 3,因此,它将无法使用动态类型.我已经尝试将“动态”更改为“对象”,但我需要能够访问每个页面上的XAML并操纵XAML.如果我只需要访问属性和方法,我就可以按照解决方案创建动态对象here.
如何动态创建每个页面并仍然能够访问XAML?
解决方法
我假设每个页面都是UserControl.如果是这种情况那么你就已经存在了.而不是创建动态对象,创建一堆UserControl对象.
将您的代码更改为:
Type type = Type.GetType("Pages.Page_" + (index).ToString(),true); UserControl newPage = (UserControl)Activator.CreateInstance(type);