2011-09-15 36 views
1

我試圖讓WebBrowser控件顯示從變量加載的HTML。我發現這個解決方案Displaying html from string in WPF WebBrowser control所以我試圖實現我的第一個DependencyProperty。試圖爲WebBrowser控件註冊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'指定的參數

and

在'PortraitSingle'類型中找不到可附加屬性'Html'。 (PortraitSingle是我的窗口的名稱)。

我無法解決如何避開它們。

另外,我不明白我是如何實際加載我的HTML到WebBrowser控件。

回答

2

發現我的問題。

需要對 'AddressOf' 到的DependencyProperty聲明

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