"The name does not exist in the namespace error" 在 XAML

"The name does not exist in the namespace error" in XAML

我知道这是一个反复出现的错误,但我似乎无法解决它。 Intellisense 确实识别了我的自定义控件的名称,并建议添加正确的 using: 指令,但不仅 XAML 设计师没有找到控件的名称,而且我也无法通过编译。

自定义控件是一个 public class 定义为

namespace MyApp.CustomControls
{
    public class CustomTextBox : TexBox
    {
        ...
    }
}

在我的 MainPage.xaml

<Page ...
xmlns:customControls="using:MyApp.CustomControls">
      ...
      <customControls:CustomTextBox/>
      ...
</Page>

这不会在设计中呈现,也不会编译。 This answer 和下面的那些对我不起作用。

错误信息:

Error XDG0008 The name "CustomTextBox" does not exist in the namespace "using:MyApp.CustomControls".

你的代码在你构建项目后应该能正常工作,并且在我这边使用你的上述代码也能很好地工作。尝试清理您的解决方案或删除项目中的 bin 和 obj 文件夹,然后再次重建您的应用程序。同时尝试重新启动您的 Visual Studio。如果仍然发生,您可以提供一个可重现的样本来帮助我调查这个问题。

我看到很多解决方案说你应该重建项目,重启Visual Studio或者重启机器。 对我有用的是 在名称空间引用 中指定程序集,即: xmlns:the_namespace="clr-namespace:the_namespace" - 产生上述错误。 xmlns:the_namespace="clr-namespace:the_namespace;assembly=the_assembly" - 效果很好。

当我尝试在我的 XAML 中使用名称 属性 而不是使用 x:Name 时,我在我的嵌入式用户控件中遇到了这个错误的一个版本。换句话说,当我的 XAML 代码如下所示时:

myUserControls="using:MyUserControls"

<myUserControls:GraphCanvas Name="GraphCanvas" />

我收到一个错误 'The name "GraphCanvas" does not exist in the namespace "using:MyUserControls"'。当我将一行代码更改为:

<myUserControls:GraphCanvas x:Name="GraphCanvas" />

一切都很好。

我在这里放弃了这个解决方案,因为我花了大约一天半的时间才弄清楚这个问题,这是我在搜索错误字符串时发现的唯一一个 Whosebug 页面。希望我能为其他人省去我所经历的麻烦。