簡體   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