Silverlight 动态生成XAML对象

Silverlight 动态生成XAML对象,silverlight,dynamic,c#-3.0,Silverlight,Dynamic,C# 3.0,我有一个Silverlight应用程序,可以显示许多“页面”。每个页面都是一个不同的XAML文件,后面有不同的代码。页面按如下顺序编号:第1页、第2页、第3页、…、第n页。页面不是静态的,将动态生成 因为我不知道页面总数,所以我必须在运行时使用Dynamic关键字加载每个页面。我的代码如下所示,运行良好: Type type = Type.GetType("Pages.Page_" + (index).ToString(), true); dynamic newPage = Activator.

我有一个Silverlight应用程序,可以显示许多“页面”。每个页面都是一个不同的XAML文件,后面有不同的代码。页面按如下顺序编号:第1页、第2页、第3页、…、第n页。页面不是静态的,将动态生成

因为我不知道页面总数,所以我必须在运行时使用Dynamic关键字加载每个页面。我的代码如下所示,运行良好:

Type type = Type.GetType("Pages.Page_" + (index).ToString(), true);
dynamic newPage = Activator.CreateInstance(type);
我的问题是,我刚刚了解到应用程序必须是Silverlight 3,因此,它将无法使用动态类型。我尝试将“动态”更改为“对象”,但我需要能够访问每个页面上的XAML并操作XAML。如果我所需要的只是访问属性和方法,那么我就能够遵循创建动态对象的解决方案


如何动态创建每个页面并仍然能够访问XAML?

我假设每个页面都是用户控件。如果是这样的话,那么你已经差不多做到了。不要创建动态对象,而是创建一组UserControl对象

将代码更改为:

Type type = Type.GetType("Pages.Page_" + (index).ToString(), true);
UserControl newPage = (UserControl)Activator.CreateInstance(type);

第一个答案是正确的,但听起来你的网站应该是数据驱动的。人工设计的页码系统通常表示存在设计问题。如果您让我们更多地了解您试图解决的实际业务问题,我们可能会提供更好的解决方案。当然,页码系统是人为设计的,但在这种情况下,它在很大程度上是设计出来的。这些页面由Microsoft Word文档生成,然后插入Silverlight应用程序,可以随时更改。在这种情况下,页码确实很有意义。无论如何,在这种特定情况下,“页面”将只存在于静态Silverlight应用程序中,该应用程序将允许用户滚动浏览内容。编号系统并不重要,只要它是重要的。