public static EventHandler RunSilverlightApplication(System.Windows.Controls.Canvas c, string source)
{
ApplicationContext app_context = ApplicationContext.Default;
// try to preload configuration (to prevent exceptions during InitApplication)
Configuration.Load(app_context);
ApplicationConfiguration app_config = Configuration.Application;
string url = HtmlPage.Document.DocumentUri.AbsoluteUri;
int lastSlash = url.Replace('\\', '/').LastIndexOf('/');
app_config.Compiler.SourceRoot = new FullPath(url.Substring(0, lastSlash), false);
int sourcelastSlash = source.Replace('\\', '/').LastIndexOf('/');
string sourceRelPath = source.Substring(lastSlash + 1);
// Silverlight language features
app_config.Compiler.LanguageFeatures = LanguageFeatures.PhpClr;
// ..
ScriptContext context = InitApplication(app_context);
Debug.Fail("Update versions below!");
ConfigurationContext.AddLibrary("mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e", null, "");
ConfigurationContext.AddLibrary("System, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e", null, "");
ConfigurationContext.AddLibrary("System.Windows, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e", null, "");
ConfigurationContext.AddLibrary("System.Net, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e", null, "");
//ConfigurationContext.AddLibrary("System.SilverLight, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", null, "");
//ConfigurationContext.AddLibrary("agclr, Version=0.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", null, "");
ConfigurationContext.AddLibrary("PhpNetClassLibrary, Version=3.0.0.0, Culture=neutral, PublicKeyToken=4af37afe3cde05fb", null, "");
//
Configuration.Application.Compiler.Debug = true;
// ..
Dictionary <string, object> vars = new Dictionary <string, object>();
currentContext.AutoGlobals.Canvas.Value = ClrObject.Wrap(c);
currentContext.AutoGlobals.Addr.Value = ClrObject.Wrap(app_config.Compiler.SourceRoot.ToString());
//Operators.SetVariableRef(currentContext, vars, "_CANVAS", Operators.GetItemRef("_CANVAS", ref currentContext.AutoGlobals.Globals.value));
//Operators.SetVariable(currentContext, vars, "_CANVAS", ClrObject.Wrap(c));
context.DynamicInclude(source, sourceRelPath, vars, null, null, InclusionTypes.RunSilverlight);
return(new EventHandler(delegate(object sender, EventArgs e)
{
if (context.ResolveFunction("OnLoad", null, true) != null)
{
PhpCallback load = new PhpCallback("OnLoad");
load.Invoke(sender, e);
}
}));
}