Beispiel #1
0
        private void ReleaseWebView()
        {
            if (webView != null)
            {
                webView.Dispose();
                webView = null;
            }

            if (webViewListener != null)
            {
                webViewListener.Dispose();
                webViewListener = null;
            }
        }
Beispiel #2
0
        private void InitializeWebView(int width, int height)
        {
            try
            {
                RaiseStatus("Creating WebView");

                webView = webCore.CreateWebView(width, height);
                webView.SetTransparent(IsTransparent);

                RaiseStatus("Initializign WebViewListener");

                webViewListener = new WebViewListener();

                webViewListener.BeginNavigation += delegate(string url, string frameName)
                {
                    RaiseStatus(string.Format("BeginNavigation: {0}", url));
                    if (BeginNavigation != null)
                    {
                        BeginNavigation(this, new UrlEventArgs(url, frameName));
                    }

                    if (string.IsNullOrEmpty(frameName))
                    {
                        Dispatcher.BeginInvoke((Action) delegate
                        {
                            Source = loadedUrl = url;
                        },
                                               DispatcherPriority.Render);
                    }
                };

                webViewListener.BeginLoading += delegate(string url, string frameName, int statusCode, string mimeType)
                {
                    RaiseStatus(string.Format("BeginLoading: {0}", url));
                    if (BeginLoading != null)
                    {
                        BeginLoading(this, new LoadingEventArgs(url, frameName, statusCode, mimeType));
                    }
                };

                webViewListener.FinishLoading += delegate
                {
                    RaiseStatus(string.Format("FinishLoading"));
                    if (FinishLoading != null)
                    {
                        FinishLoading(this, EventArgs.Empty);
                    }
                };

                webViewListener.ReceiveTitle += delegate(string title, string frameName)
                {
                    RaiseStatus(string.Format("ReceiveTitle: {0}", title));
                };

                webViewListener.ChangeCursor += delegate(ValueType cursorHandle)
                {
                    Dispatcher.BeginInvoke((Action) delegate
                    {
                        Cursor = CursorInteropHelper.Create(new SafeFileHandle((IntPtr)cursorHandle, false));
                    },
                                           DispatcherPriority.Render);
                };

                webViewListener.ChangeTooltip += delegate(string text)
                {
                    Dispatcher.BeginInvoke((Action) delegate
                    {
                        try
                        {
                            if (text != null && text.Trim().Length > 0 && IsFocused)
                            {
                                tooltip.Content = text;
                                tooltip.IsOpen  = true;
                            }
                            else
                            {
                                tooltip.IsOpen = false;
                            }
                        }
                        catch
                        {
                        }
                    },
                                           DispatcherPriority.Render);
                };

                webViewListener.ChangeKeyboardFocus += delegate(bool isFocused)
                {
                    isBrowserFocused = isFocused;
                };

                webView.SetListener(webViewListener);
                webView.Focus();
            }
            catch (Exception ex)
            {
                RaiseStatus(ex.Message + ex.StackTrace);
            }
        }