我正在尝试让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控件中的。
本
答案 0 :(得分:2)
找到了我的问题。
需要将“AddressOf”添加到DependencyProperty语句
Public Shared ReadOnly HtmlProperty As DependencyProperty = DependencyProperty.RegisterAttached("Html", GetType(String), GetType(PortraitSingle), New FrameworkPropertyMetadata(AddressOf OnHtmlChanged))