public void Dispose() { if (ListenToCSharp) { UnlistenToCSharpChanges(); } if (_SessionInjector != null) { _SessionInjector.Dispose(); _SessionInjector = null; } _UnrootedEntities.Clear(); }
public void Dispose() { WebCore.QueueWork(() => { if (_CleanUp != null) { _CleanUp(); _CleanUp = null; } if (_JavascriptSessionInjector != null) { _JavascriptSessionInjector.Dispose(); _JavascriptSessionInjector = null; } } ); }
internal BidirectionalMapper(object iRoot, IWebView iwebview, JavascriptBindingMode iMode, object iadd) { _IWebView = iwebview; _LocalBuilder = new LocalBuilder(iwebview); _JSObjectBuilder = new CSharpToJavascriptMapper(_LocalBuilder, this); _JavascriptToCSharpMapper = new JavascriptToCSharpMapper(iwebview); _Root = _JSObjectBuilder.Map(iRoot, iadd); _UnrootedEntities = new List<IJSCSGlue>(); _BindingMode = iMode; IJavascriptListener JavascriptObjecChanges = null; if (iMode == JavascriptBindingMode.TwoWay) JavascriptObjecChanges = this; _GlobalBuilder = new GlobalBuilder(_IWebView, "MVVMGlue"); _SessionInjector = new JavascriptSessionInjector(iwebview, _GlobalBuilder, JavascriptObjecChanges); }
public static Task<IAwesomeBinding> Bind(IWebView view, string iViewModel, Action First = null, Action CleanUp = null) { TaskCompletionSource<IAwesomeBinding> tcs = new TaskCompletionSource<IAwesomeBinding>(); view.ExecuteWhenReady(() => { if (First != null) First(); JSObject json = view.ExecuteJavascriptWithResult("JSON"); var root = json.Invoke("parse", new JSValue(iViewModel)); var injector = new JavascriptSessionInjector(view, new GlobalBuilder(view, "MVVMGlue"), null); var mappedroot = injector.Map(root, null); injector.RegisterInSession(mappedroot); tcs.SetResult(new StringBinding(mappedroot, injector, CleanUp)); }); return tcs.Task; }
internal BidirectionalMapper(object iRoot, IWebView iwebview, JavascriptBindingMode iMode, object iadd) { _IWebView = iwebview; _LocalBuilder = new LocalBuilder(iwebview); _JSObjectBuilder = new CSharpToJavascriptMapper(_LocalBuilder, this); _JavascriptToCSharpMapper = new JavascriptToCSharpMapper(iwebview); _Root = _JSObjectBuilder.Map(iRoot, iadd); _UnrootedEntities = new List <IJSCSGlue>(); _BindingMode = iMode; IJavascriptListener JavascriptObjecChanges = null; if (iMode == JavascriptBindingMode.TwoWay) { JavascriptObjecChanges = this; } _GlobalBuilder = new GlobalBuilder(_IWebView, "MVVMGlue"); _SessionInjector = new JavascriptSessionInjector(iwebview, _GlobalBuilder, JavascriptObjecChanges); }
internal StringBinding( JSObject root, JavascriptSessionInjector iJavascriptSessionInjector, Action CleanUp) { _JavascriptSessionInjector = iJavascriptSessionInjector; _CleanUp = CleanUp; _Root = root; }
public void Dispose() { if (ListenToCSharp) UnlistenToCSharpChanges(); if (_SessionInjector != null) { _SessionInjector.Dispose(); _SessionInjector = null; } _UnrootedEntities.Clear(); }