【问题标题】:Change between two xaml pages when button clicked单击按钮时在两个 xaml 页面之间切换
【发布时间】:2018-06-17 18:47:18
【问题描述】:

我正在 Visual Studio 2017 中创建一个应用程序。我有两个 .xaml 页面,我想在单击按钮时在两者之间进行切换。到目前为止,我的代码是:

private void bakingButton(object sender, RoutedEventArgs e)
        {
            CookingMenu cooking = new CookingMenu();
            cooking.show();
        }

我所在的页面名为 BakingMenu.xaml,我想转到 CookingMenu.xaml。但是,这会给出错误消息:The type or namespace name 'CookingMenu' could not be found (are you missing a using directive or an assembly reference?)

我是否需要在代码中的其他地方引用其他文件,还是我遗漏了其他内容?

【问题讨论】:

    标签: c# visual-studio xaml visual-studio-2017


    【解决方案1】:

    您需要包含对 CookingMenu 定义位置的引用;特别是定义它的命名空间。如果您在 Visual Studio 项目的同一文件夹中创建了 CookingMenu.xamlBakingMenu.xaml,并将它们的命名空间保留为默认生成的命名空间,那么它们将位于同一命名空间中,并且您不需要参考。

    但是,如果您在不同的文件夹中创建它们,或者编辑了它们的命名空间,那么它们位于不同的命名空间中,您需要参考。

    您可以将其想象为您正在使用页面(类)的名字,但编译器不知道您指的是哪个“Joe”。您需要使用它的全名。

    您可以内联执行此引用(尽管每次引用 CookingMenu 类型时都需要使用它):

    NameSpace.CookingMenu cooking = new NameSpace.CookingMenu();
    

    其中NameSpace 被声明的命名空间CookingMenu 替换(您可以通过打开CookingMenu 的C# 文件并查看顶部附近来查看...它可能包含几个用句点分隔的单词)。示例命名空间可能类似于 MyApp.Models.Class。默认情况下,它包含您的类定义(因此它是最外面的一组花括号)。不要在您的参考中包含“命名空间”,而只是该行后面的所有内容。

    或者,您可以将单个命名空间引用放在文件顶部,然后您不需要在每个引用中都包含命名空间(在该文件中):

    using NameSpace;
    

    然后你就可以使用你写的代码了。

    这是关于using 指令的文档:https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/using-directive

    希望有帮助!

    【讨论】:

    • 两个文件都存储在同一个文件夹中,并且都具有相同的命名空间。我在顶部添加了using namespace; 行,但它没有改变任何东西。
    • 我假设您将“命名空间”交换为存储它们的实际命名空间。如果是这样,可能是 Visual Studio 中的错误?尝试清理您的项目,然后再次构建它(都从 Visual Studio 的“项目”菜单中。此外,如果您在 CookingMenu 下看到红色错误行,请将鼠标悬停在它上面并单击出现的小灯泡图标,看看它是什么说。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-24
    • 1970-01-01
    相关资源
    最近更新 更多