我的班级代码应该去哪里,它是否正确引用?

时间:2014-12-22 17:08:31

标签: .net wpf vb.net visual-studio-2013 wpf-controls

我正在关注此事:WPF WebBrowser Control Custom Property

我得到与用户相同的错误在“WebBrowser”类型中找不到属性“Html”。

我已经完成了建议和更改命名空间的用户,但错误仍然存​​在,我唯一能想到的是我是如何添加课程的......我右键单击了我的项目解决方案资源管理器并添加了一个类文档然后在其中创建复制代码。

有什么想法吗?我知道这对我来说是个蠢货。

我所做的一些截图和代码,这是一个新的测试项目,所以我可以排除其他任何事情:

enter image description here BrowserHtmlBinding.vb

Public Class BrowserHtmlBinding

    Private Sub New()
    End Sub

    Public Shared BindableSourceProperty As DependencyProperty =
        DependencyProperty.RegisterAttached("Html",
                                            GetType(String),
                                            GetType(WebBrowser),
                                            New UIPropertyMetadata(Nothing,
                                                                    AddressOf BindableSourcePropertyChanged))

    Public Shared Function GetBindableSource(obj As DependencyObject) As String
        Return DirectCast(obj.GetValue(BindableSourceProperty), String)
    End Function

    Public Shared Sub SetBindableSource(obj As DependencyObject, value As String)
        obj.SetValue(BindableSourceProperty, value)
    End Sub

    Public Shared Sub BindableSourcePropertyChanged(o As DependencyObject, e As DependencyPropertyChangedEventArgs)
        Dim webBrowser = DirectCast(o, System.Windows.Controls.WebBrowser)
        webBrowser.NavigateToString(DirectCast(e.NewValue, String))
    End Sub

End Class

MainWindow.xaml

<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:custom="clr-namespace:WpfApplication2" 
Title="MainWindow" Height="350" Width="525">
<Grid>
    <WebBrowser custom:Html="&lt;b&gt;Hey Now&lt;/b&gt;" />
</Grid>
</Window>
编辑:正如马克指出我在“webbrowser”控件上遗漏了一些文字,我已更新并生成了更多错误,但包括原始错误。

enter image description here

1 个答案:

答案 0 :(得分:0)

您应该宣布Attached Property,但 如果查看DependencyProperty.RegisterAttached method,您会看到第二个Type参数名为ownerType。这是您正在编写Type的控件的Attached Property,而是定义该属性的实际类的Type。在您的情况下,那将是BrowserHtmlBinding

免责声明:您可能也有其他错误。


更新&gt;&gt;&gt;

好的,我在屏幕截图中看到了更多问题。你以某种方式设法在一个类中定义一个类,这是错误的。你的班级也没有命名空间......另一个错误。要解决此问题,请更改此信息:

Public Class BrowserHtmlBinding
    Public Class BrowserHtmlBinding
        ...
    End Class
End Class

对此:

Namespace WpfApplication2
    Public Class BrowserHtmlBinding
        ...
    End Class
End Namespace

现在BrowserHtmlBinding位于WpfApplication2命名空间中。

最后,如果您仍然遇到问题,请阅读MSDN上Attached Properties Overview页面的自定义附加属性部分,以确保您已正确声明Attached Property