如果加载两个控件,WebBrowser控件在第一次迭代时不会填充

时间:2012-10-15 14:30:21

标签: c# wpf wpf-controls

我遇到的问题是我有一个名为“浏览器”的WebBrowser控件。浏览器由MEF创建的不同控件填充:

 //Apply Button that cretes the HTML that is loaded into the Browser
 btnCreateHTMLPreview(object sender, RoutedEventArgs e)
 {
   //Clears the content of the observable collection
   contents.Clear();

   //usedControls is an observable collection of all loaded controls in the stack panel
   foreach(var control in usedControls)
      control.CreateHTML();
 }

 //Code in the MEF Control that creates the HTML that is will be loaded into the browser
 CreateHTML()
 {
   string tempStuff = null;
   tempStuff += "<h1>" + MyControl.lblHeader.Content + "</h1>\n";
   tempStuff += MyControl.txtTextGoesHere.Text + "\n";

   //Give the HTML back to the Application
   parent.AcceptReport(tempStuff);
 }

 //Application side where it accepts the HTML and loads it into the Browser
 AcceptHTML(string passedInContent)
 {
   //Observable collection that holds the content of all possible MEF Controls
   contents.Add(passedInContent);

   string tempStuffForBrowser = null;
   tempStuffForBrowser = "<html>\n";
   tempStuffForBrowser += "<body>\n";

   //Add the content that was saved earlier
   foreach (var strInd in contents)
      tempStuffForBrowser += strInd;

   tempStuffForBrowser = "<html>\n";
   tempStuffForBrowser += "<body>\n";

   Browser.NavigateToString(tempStuffForBrowser);
 }

我在上面努力尝试提供我如何填充html并将其添加回浏览器。如果有任何不清楚的地方,请告诉我。

如果我只添加了一个控件,以便当我单击按钮加载html时“content”只有一个控件,它就可以正常工作并加载它。但是如果我加载了多个控件,我必须单击该按钮两次才能显示。我发现这非常奇怪。我尝试解决这个问题的方法是在离开活动之前检查并查看浏览器中是否有内容,但我不确定如何执行此操作。如果有人对如何解决这个问题有任何建议或任何其他想法,请告诉我。

1 个答案:

答案 0 :(得分:1)

看起来WebBrowser控件存在某种问题,它不会加载它获得的第一个字符串;我假设还有一些尚未发生的初始化。我通过致电

让它发挥作用

myBrowser.NavigateToString("");

从我的类的构造函数中,然后使用它从那时起正确工作。 Hokey但它确实有效。