c# - 将 WPF 浏览器调整为它的 HTML 内容

标签 c# html wpf webbrowser-control

我想在 WPF 浏览器控件中展示我的 Flair 并将其调整到尽可能小的尺寸。

XAML:

<Window x:Class="TestProject.MainWindow"
        [...]
        Title="MainWindow" 
        MaxHeight="500" 
        MaxWidth="500"
        Loaded="Window_Loaded"
        SizeToContent="WidthAndHeight" 
        Height="86.453" 
        Width="163.44">
<Grid>
    <WebBrowser x:Name="browser"></WebBrowser>        
</Grid>

这是我的代码隐藏:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private string CreateHTML()
    {
        StringBuilder builder = new StringBuilder();
        builder.AppendLine("<!DOCTYPE html>");
        builder.AppendLine("<html>");
        builder.AppendLine("<body>");
        builder.AppendLine("<a href=\"http://stackexchange.com/users/5852250\">");
        builder.AppendLine("<img src=\"http://stackexchange.com/users/flair/5852250.png?theme=dark\" width=\"208\" height=\"58\" alt=\"profile for Felix D. on Stack Exchange, a network of free, community-driven Q&amp;A sites\" title=\"profile for Felix D. on Stack Exchange, a network of free, community-driven Q&amp;A sites\">");
        builder.AppendLine("</a>");
        builder.AppendLine("</body>");
        builder.AppendLine("<html>");
        return builder.ToString();
    }

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        string htmlString = CreateHTML();            
        browser.NavigateToString(htmlString);            
    }        
}

我希望浏览器(其内容的行为类似于 SizeToContent="WidthAndHeight")。

我还没有找到可行的解决方案。

我嵌入了 Microsoft.mshtml 并试图获取某物。在 browser.Document 之外,但到目前为止我没有取得任何进展。

有人做过某事。相似?

最佳答案

您可以在导航前将浏览器的大小设置为0,0,然后在文档加载完成后,您可以设置宽度高度对文档的 scrollWidthscrollHeight 的控制:

private void browser_LoadCompleted(object sender, NavigationEventArgs e)
{
    browser.Width = ((dynamic)browser.Document).Body.parentElement.scrollWidth;
    browser.Height = ((dynamic)browser.Document).Body.parentElement.scrollHeight;
}
private void browser_Navigating(object sender, NavigatingCancelEventArgs e)
{
    browser.Width = 0;
    browser.Height = 0;
}

注意

1) 该帖子是对根据其 HTML 内容调整 WPF 浏览器大小的答案。如果问题恰恰是显示图像,您可以依赖第一条评论中提到的 Image 控件。

2) 使用 WebBrowser 展示您的才华时控件,您需要通过为 body 标记设置 scroll="no" 属性来关闭滚动。您还需要为 body 标签设置 style=\"padding:0px;margin:0px;\" 。还可以通过为 img 标记设置 style="border:0px;" 以及其他一些 html 和 css 更正来移除图像边框。

3) 在 DPI 设置为 125% 的窗口中,您需要将值乘以 0.8。

关于c# - 将 WPF 浏览器调整为它的 HTML 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40719182/

相关文章:

c# - 循环 C# WPF 中按钮的单击事件

c# - WPF 数据网格 : How to prevent auto change row on enter key pressed?

c# - 在表单中输入的数据不会插入到表中

c# - 在生产中使用 InteractiveBrowserCredential 对 Azure Key Vault 进行身份验证将不起作用

c# - 如何在打印时关闭 WebBrowser?

html - 如何使用 ul 居中 h5

jquery - CodeSlider 选项卡大小调整

c# - 使用 TimeSpan.ParseExact 解析时,输入字符串的格式不正确

javascript - JQUERY、CSS、事件处理程序

wpf - 两列DataGrid : Property name and Property value