Браузер не инициализирован в tabitem с помощью ChromiumWebBrowser WPF - PullRequest
0 голосов
/ 21 февраля 2019

У меня проблема с управлением Cefsharp ChromiumWebBrowser в WPF.Проект содержит UserControl и Tabitem, который находится внутри UserControl.Когда программа работает и я перехожу к элементу управления tabitem, у меня возникает исключение

Исключение типа 'System.Exception' произошло в CefSharp.dll, но не было обработано в коде пользователя. Экземпляр IBrowser имеет значение null.Вероятно, браузер не завершил инициализацию или находится в процессе удаления.

XAML

<UserControl x:Class="QuoteHubWPF.Controls.ChromeWebBrowser"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         xmlns:local="clr-namespace:QuoteHubWPF.Controls"
         xmlns:cefSharp="clr-namespace:CefSharp.Wpf;assembly=CefSharp.Wpf"
         xmlns:ge="clr-namespace:SourceChord.ResponsiveGrid;assembly=ResponsiveGrid.Wpf"

  mc:Ignorable="d"  ClipToBounds="True">


<cefSharp:ChromiumWebBrowser Name="chromiumWebBrowser" VerticalAlignment="Stretch"    VerticalContentAlignment="Stretch" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch"   RenderTransformOrigin="0.5,0.5"  Height="360" ClipToBounds="True" Loaded="ChromiumCKEditor_Loaded"  IsBrowserInitializedChanged="browser_IsBrowserInitializedChanged"   FrameLoadEnd="chromiumWebBrowser_FrameLoadEnd"/>

.cs

открытый частичный классChromeWebBrowser: UserControl {

    public ChromeWebBrowser()
    {

        InitializeComponent();
         chromiumWebBrowser.Address = "html";

    }      

    public string GetHTML()
    {


        var htmlFromPage = chromiumWebBrowser.EvaluateScriptAsync("getDataFromTheEditor", 10000);

здесь существует исключение

       var response = htmlFromPage.Result;
        var result = response.Success ? (response.Result ?? "null").ToString() : response.Message;

        return result;

    }
    private void browser_IsBrowserInitializedChanged(object sender, DependencyPropertyChangedEventArgs e)
    {

  some code to run script 


    }   
}

Любое решение, чтобы решить эту проблему?Это происходит при запуске Tabitem Control.

Обновление с объясненной проблемой Спасибо за быстрый ответ @amaitland.GetHtml вызывает другую модель представления.Так как же я могу инициализировать еще раз без ошибок с избыточным процессом?

NewJobViewModel

public void GetHTMLFromView()
    {
        if (View != null)
        {
            var njView = View as NewJobUC;                            
          var contentJobDescription = njView.JobDescriptionCKEditor.GetHTML();

NewJobUC.xaml

<TabItem ...some code ... 
<local:ChromeWebBrowser  x:Name="JobScopeCKEditor" CKEContent="{Binding NewJob.JobScope}"   HorizontalAlignment="Stretch" Width="{Binding ElementName=canv, Path=ActualWidth}" />
</TabItem>
...