コード例 #1
0
        public void Dispose()
        {
            if (ListenToCSharp)
            {
                UnlistenToCSharpChanges();
            }

            if (_SessionInjector != null)
            {
                _SessionInjector.Dispose();
                _SessionInjector = null;
            }

            _UnrootedEntities.Clear();
        }
コード例 #2
0
        public void Dispose()
        {
            WebCore.QueueWork(() =>
            {
                if (_CleanUp != null)
                {
                    _CleanUp();
                    _CleanUp = null;
                }

                if (_JavascriptSessionInjector != null)
                {
                    _JavascriptSessionInjector.Dispose();
                    _JavascriptSessionInjector = null;
                }
            }
            );
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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;
        }
コード例 #5
0
        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);
        }
コード例 #6
0
 internal StringBinding( JSObject root, JavascriptSessionInjector iJavascriptSessionInjector, Action CleanUp)
 {
     _JavascriptSessionInjector = iJavascriptSessionInjector;
     _CleanUp = CleanUp;
     _Root = root;
 }
コード例 #7
0
        public void Dispose()
        {
            if (ListenToCSharp)
                UnlistenToCSharpChanges();

            if (_SessionInjector != null)
            {
                _SessionInjector.Dispose();
                _SessionInjector = null;
            }

            _UnrootedEntities.Clear();
        }