public ViewportView(ViewportWindowViewModel vm)
        {
            if (vm == null)
            {
                return;
            }

            this.DataContext = vm;

            // CEF will already by loaded by sandbox or revit
            if (!Cef.IsInitialized)
            {
                var settings = new CefSettings {
                    RemoteDebuggingPort = 8088
                };

                settings.RegisterScheme(new CefCustomScheme
                {
                    SchemeName           = CefSharpSchemeHandlerFactory.SchemeName,
                    SchemeHandlerFactory = new CefSharpSchemeHandlerFactory()
                });

                Cef.Initialize(settings);
            }

            InitializeComponent();

            // When view model is updated call javascript update function
            vm.PropertyChanged += ExecuteJavascript;
        }
        public ViewportView(ViewportWindowViewModel vm)
        {
            if (vm == null)
            {
                return;
            }

            this.DataContext = vm;

            // CEF will already by loaded by sandbox or revit
            if (!Cef.IsInitialized)
            {
                var settings = new CefSettings {
                    RemoteDebuggingPort = 8088
                };

                settings.RegisterScheme(new CefCustomScheme
                {
                    SchemeName           = CefSharpSchemeHandlerFactory.SchemeName,
                    SchemeHandlerFactory = new CefSharpSchemeHandlerFactory()
                });

                Cef.Initialize(settings);
            }

            InitializeComponent();

            // When view model is updated call javascript update function
            vm.PropertyChanged += ExecuteJavascript;

            // Center initial viewport window upon launch
            //WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen;

            //ScriptTextBox.KeyDown += new KeyEventHandler(textBoxKeyDown);
        }
        // Update geometry when view model new changes
        private async void ExecuteJavascript(object sender, EventArgs e)
        {
            PropertyChangedEventArgs eventArgs = e as PropertyChangedEventArgs;
            string changedProperty             = eventArgs.PropertyName;

            if (changedProperty == "RenderData")
            {
                ViewportWindowViewModel vm = sender as ViewportWindowViewModel;
                string jsonString          = vm.RenderData();

                if (!string.IsNullOrWhiteSpace(jsonString))
                {
                    JavascriptResponse response = await Browser.EvaluateScriptAsync(jsonString);
                }
            }
        }