尝试为WebBrowser控件注册DependencyProperty

时间:2011-09-15 11:21:40

标签: wpf browser dependency-properties

我正在尝试让WebBrowser控件显示从变量加载的HTML。我找到了这个解决方案Displaying html from string in WPF WebBrowser control所以我试图实现我的第一个DependencyProperty。

以下是我对实施的尝试:

Public Shared ReadOnly HtmlProperty As DependencyProperty = DependencyProperty.RegisterAttached("Html", GetType(String), GetType(PortraitSingle), New FrameworkPropertyMetadata(OnHtmlChanged))

<AttachedPropertyBrowsableForType(GetType(WebBrowser))> _
Public Shared Function GetHtml(ByVal d As WebBrowser) As String
    Return DirectCast(d.GetValue(HtmlProperty), String)
End Function

Public Shared Sub SetHtml(ByVal d As WebBrowser, ByVal value As String)
    d.SetValue(HtmlProperty, value)
End Sub

Private Shared Sub OnHtmlChanged(ByVal d As DependencyObject, ByVal e As DependencyPropertyChangedEventArgs)
    Dim wb As WebBrowser = TryCast(d, WebBrowser)
    If wb IsNot Nothing Then
        wb.NavigateToString(TryCast(e.NewValue, String))
    End If
End Sub

和XAML

<WebBrowser x:Name="HTMLDescription" Grid.RowSpan="2" Margin="10" local:PortraitSingle.Html="{Binding HtmlToDisplay}"></WebBrowser>

首先,我遇到的问题是我遇到以下错误:

未为'Private Shared Sub OnHtmlChanged(d As System.Windows.DependencyObject,e As System.Windows.DependencyPropertyChangedEventArgs)的参数'e'指定参数

在'PortraitSingle'类型中找不到可附加属性'Html'。 (PortraitSingle是我的窗口的名称)。

我无法弄清楚如何绕过它们。

另外,我无法理解我是如何将HTML实际加载到WebBrowser控件中的。

1 个答案:

答案 0 :(得分:2)

找到了我的问题。

需要将“AddressOf”添加到DependencyProperty语句

Public Shared ReadOnly HtmlProperty As DependencyProperty = DependencyProperty.RegisterAttached("Html", GetType(String), GetType(PortraitSingle), New FrameworkPropertyMetadata(AddressOf OnHtmlChanged))