WPF的HTML呈现器无法正确呈现

时间:2015-11-16 17:54:57

标签: c# html .net wpf xaml

我正在使用NuGet的“HTML Renderer for WPF”。我发现输出不合适,discussion boards似乎安静且不受监控,所以我觉得最好在这里发布。

我的xaml中有一个非常简单的HtmlPanel

<htmlrenderer:HtmlPanel Grid.Row="2" 
                            Text="{Binding ReportContent}"/>

,其中

xmlns:htmlrenderer="clr-namespace:TheArtOfDev.HtmlRenderer.WPF;assembly=HtmlRenderer.WPF"

我正在提供一些简单的HTML;

<!DOCTYPE html>
<html><head><title>dummy</title></head>
<body>
<style>
table {
    border-spacing: 5px;
}
table, th, td {
    border: 1px solid black;
    border-collapse: collapse;
}
th, td {
    padding: 2px;
}
th {
    text-align: left;
}
</style>
<h1>Report for <b>Processing dev</b> generated 16/11/2015 16:02</h1>
<hr/>
<h2>Group <i>Everyone</i></h2> 
<table><caption>
<h3><b>Stage 1</b>
Run; Mass start</h3></caption><tr><th>pos</th><th>num</th><th>Name</th><th>Time</th></tr>
<tr><td>1</td><td>1</td><td>Person 1</td><td>00:41:00.0</td></tr>
<tr><td>2</td><td>2</td><td>Person 2</td><td>00:47:23.0</td></tr>
<tr><td>3</td><td>3</td><td>Person 3</td><td>00:47:24.0</td></tr>
<tr><td>4</td><td>4</td><td>Person 4</td><td>00:47:24.1</td></tr>
<tr><td>5</td><td>5</td><td>Person 5</td><td>00:52:00.0</td></tr>
<tr><td>6</td><td>6</td><td>Person 6</td><td>00:54:21.0</td></tr>
<tr><td>7</td><td>7</td><td>Person 7</td><td>00:54:32.0</td></tr>
<tr><td>8</td><td>8</td><td>Person 8</td><td>00:55:04.0</td></tr>
<tr><td>9</td><td>9</td><td>Person 9</td><td>00:56:23.0</td></tr>
<tr><td>10</td><td>10</td><td>Person 10</td><td>01:03:00.0</td></tr>
</table>
<table><caption>
<h3>Overall Results</h3>
</caption><tr><th>pos</th><th>num</th><th>Name</th><th>Time</th></tr>
<tr><td>1</td><td>1</td><td>Person 1</td><td>00:41:00.0</td></tr>
<tr><td>2</td><td>2</td><td>Person 2</td><td>00:47:23.0</td></tr>
<tr><td>3</td><td>3</td><td>Person 3</td><td>00:47:24.0</td></tr>
<tr><td>4</td><td>4</td><td>Person 4</td><td>00:47:24.1</td></tr>
<tr><td>5</td><td>5</td><td>Person 5</td><td>00:52:00.0</td></tr>
<tr><td>6</td><td>6</td><td>Person 6</td><td>00:54:21.0</td></tr>
<tr><td>7</td><td>7</td><td>Person 7</td><td>00:54:32.0</td></tr>
<tr><td>8</td><td>8</td><td>Person 8</td><td>00:55:04.0</td></tr>
<tr><td>9</td><td>9</td><td>Person 9</td><td>00:56:23.0</td></tr>
<tr><td>10</td><td>10</td><td>Person 10</td><td>01:03:00.0</td></tr>
</table>
</body></html>

我的应用程序呈现如下。请注意表格上没有标题,左上方的垃圾(只有在我有标题时才显示),并且缺少斜体文字(“Everyone”应以斜体显示)。将此加载到Chrome中可以正确呈现。我在validator.w3.org上检查了它,唯一的错误是样式中缺少一个新的“范围”关键字,但无论如何都不支持。

enter image description here

有没有其他人有这个图书馆的经验?鉴于它在这么简单的情况下似乎没有正常运行,并且似乎它可能处于休眠状态,是否值得坚持?是否有一个简单的替代方案可以只占用一块HTML并呈现它而不是CEFSharp的顶级解决方案,其中必须创建和注册各种页面提供程序?

1 个答案:

答案 0 :(得分:1)

尝试System.Windows.Controls.WebBrowser

<Grid>
    <WebBrowser x:Name="webBrowser1" Margin="0" Source="file:///C:/Users/Public/test01.html"/>
</Grid>

或者:

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        webBrowser1.Source = new Uri("file:///C:/Users/Public/test01.html");
    }

enter image description here