簡體   English   中英

在運行時將具有事件和自定義類的xaml加載到html托管的Silverlight框架中

[英]Loading xaml with events and custom classes in to Silverlight frame hosted in html, during runtime

這是場景:

托管在html頁面上的Silverlight應用程序(僅是線框)(沒有aspx /服務器端解決方案,僅是從c:\\ somefolder \\ mysilverlight.html加載的客戶端html頁面),實際上是使用WPF應用程序托管WebBrowser控件。

WPF應用程序需要在運行時動態地將Silverlight xaml注入Silverlight線框。 這樣頁面就會被渲染。

被抽入Wireframe的silverlight xaml是一個具有事件處理程序和自定義類的xaml字符串。 所以我不能使用XamlReader.Load。

在Silverlight 3中刪除了InitializeFromXaml,所以我也不能使用它。

還有其他選擇嗎?

更新:我正在嘗試使用快速預覽構建輕量級的Xaml編輯器,並且確實需要從xaml字符串中加載它。 Application.LoadComponent僅適用於已編譯的SL程序集

InitializeComponent替換為Application.LoadComponent。 您可以像這樣調用方法:

System.Windows.Application.LoadComponent(this, new
 System.Uri("/SL_40308_VS;component/MainPage.xaml", System.UriKind.Relative));

查看Silverlight項目中FooPage.g.cs生成的SilverlightProject / obj / debug,以獲取完整示例。

只是調用,Silverlight無法在運行時編譯C#代碼。
您的選擇是:

  1. 將您的代碼移到Silverlight可以在運行時解釋的動態語言中。 使用DLR,您可以在IronPython或IronRuby中隱藏Silverlight代碼。 DLR允許您動態加載IronPython / IronRuby代碼並將其與代碼隱藏關聯。 查看Jimmy Schmenti的樣本

  2. 使用System.CompilerServices在完整的桌面CLR上編譯Silverlight代碼。 Nokola具有出色的服務器端編譯示例 ,您可以輕松地將其轉換為WPF。

  3. 從動態加載的XAML中刪除代碼引用。 這聽起來像是一種非常獨特的技術解決方案,也許是錯誤的解決方案。 您要做什么才能確保采取這種極端的方法?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM