Как прокрутить элемент управления WPF WebBrowser до конца? - PullRequest
4 голосов
/ 04 декабря 2010
<WebBrowser x:Name="messageBufferWebBrowser" 
     controls:WebBrowserUtility.Body="{Binding MessageBuilder}"/>

Я использую этот класс для включения привязки к телу элемента управления WebBrowser

public static class WebBrowserUtility
{


    public static readonly DependencyProperty BodyProperty =
    DependencyProperty.RegisterAttached("Body", typeof(string), typeof(WebBrowserUtility), new PropertyMetadata(OnBodyChanged));

    public static string GetBody(DependencyObject dependencyObject)
    {
        return (string)dependencyObject.GetValue(BodyProperty);
    }

    public static void SetBody(DependencyObject dependencyObject, string body)
    {
        dependencyObject.SetValue(BodyProperty, body);
    }

    private static void OnBodyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        var webBrowser = d as WebBrowser;
        if (!string.IsNullOrWhiteSpace(e.NewValue as string) && webBrowser != null)
        {
            if (Application.Current.MainWindow != null && !DesignerProperties.GetIsInDesignMode(Application.Current.MainWindow))
            {
                webBrowser.NavigateToString((string)e.NewValue);
            }
        }
    }

}

Это мой WebBrowser, я привязываю его к свойству StringBuilder в ViewModel. Как я могу заставить элемент управления WebBrowser прокручивать до конца?

1 Ответ

6 голосов
/ 16 февраля 2012

Если вы преобразуете свойство Document WebBrowser в mshtml.HTMLDocument, то вы можете перейти к определенной позиции на странице (или внизу, используя максимально возможное значение):

var html = webBrowser.Document as mshtml.HTMLDocument;
html.parentWindow.scroll(0, 10000000);

Обратите внимание, что вы должны добавить ссылку на Microsoft.mshtml в вашем проекте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...