1

我有一个新的 VB.Net WPF 应用程序。MainWindow.xaml 仅包含一个“测试”按钮:

<Window x:Class="MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Button Content="Test"
                Name="btnTest" />
    </Grid>
</Window>

Application.xaml 保持不变:

<Application x:Class="Application"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    StartupUri="MainWindow.xaml">
    <Application.Resources>

    </Application.Resources>
</Application>

后面的代码显示在这里。我所做的只是双击按钮,以便自动添加事件处理程序。我还将 MainWindow 添加到 View 命名空间。

Namespace View
    Class MainWindow
        ' A test button on the main window
        Private Sub btnTest_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles btnTest.Click
            MessageBox.Show("Hello world!")
        End Sub
    End Class
End Namespace

当我构建它时,它不会编译。我得到的错误信息是:

Handles 子句需要在包含类型或其基类型之一中定义的 WithEvents 变量。

当我从 View 命名空间中删除 MainWindow 时,一切都很好。很明显,命名空间是一个问题。我可以将 Window 添加到命名空间,我是否需要更改应用程序中的其他内容才能使其正常工作?

4

1 回答 1

5

当您将部分类放入命名空间时,您正在破坏它。除了将 VB.NET 代码移动到命名空间之外,您还需要移动x:Class属性:

<Window x:Class="View.MainWindow" ... />

Namespace View
    Class MainWindow
       '...
    End Class
End Namespace

Visual Studio 生成一个部分 VB.NET 类,它是您的代码的一部分。由于您将代码移至另一个命名空间,因此它不再是 Visual Studio 生成的一部分。

于 2012-07-11T19:25:53.797 回答