繁体   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