[英]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#代碼。
您的選擇是:
將您的代碼移到Silverlight可以在運行時解釋的動態語言中。 使用DLR,您可以在IronPython或IronRuby中隱藏Silverlight代碼。 DLR允許您動態加載IronPython / IronRuby代碼並將其與代碼隱藏關聯。 查看Jimmy Schmenti的樣本 。
使用System.CompilerServices在完整的桌面CLR上編譯Silverlight代碼。 Nokola具有出色的服務器端編譯示例 ,您可以輕松地將其轉換為WPF。
從動態加載的XAML中刪除代碼引用。 這聽起來像是一種非常獨特的技術解決方案,也許是錯誤的解決方案。 您要做什么才能確保采取這種極端的方法?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.