在XML命名空间“clr-namespace:XYZ;assembly=XYZ”中,标记“Employee”不存在。

4

我正在尝试一个简单的 WPF 应用程序。该 XAML 代码如下:

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:sys="clr-namespace:System;assembly=mscorlib"
        xmlns:local="clr-namespace:WpfApplication1;assembly=WpfApplication1"
        Title="My First WPF Demo" Height="350" Width="525">
    <Window.Resources>
        <sys:Int32 x:Key="i">10</sys:Int32>
        <local:Employee x:Key="emp2"></local:Employee> --> THIS LINE
    </Window.Resources>
    <StackPanel>
        <TextBox x:Name="txtName" FontSize="18" Margin="20"></TextBox>
        <Button x:Name="btnClickMe" FontSize="18" Margin="20" 
                Click="btnClickMe_Click">Click Me</Button>
        <TextBlock x:Name="lblName" FontSize="18" Margin="20"></TextBlock>
        <Label x:Name="lblEmpInfo" FontSize="18" Margin="20"></Label>
        <Label x:Name="lblEmpInfo2" FontSize="18" Margin="20"></Label>
    </StackPanel>
</Window>

我有一个在同一项目中如下所示的Employee类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WpfApplication1
{
    public class Employee
    {
        public int ID { get; set; }
        public string Name { get; set; }
    }
}

当我尝试构建我的项目时,出现以下错误:

错误1:在XML命名空间“clr-namespace:WpfApplication1;assembly=WpfApplication1”中不存在标记“Employee”。第9行第10个位置。


我没有仔细检查,但是你尝试过删除 ;assembly=WpfApplication1 部分吗?只留下 xmlns:local="clr-namespace:WpfApplication1" - almulo
尝试了很多次。我甚至尝试重新启动Visual Studio。 - AnishaJain
希望你的项目里没有任何文件夹,只有文件存在。 - DeshDeep Singh
是的,我刚刚添加了一个类。我没有对结构做任何其他更改。 - AnishaJain
在您的 xaml.cs 文件中,将此.DataContext = new Employee(); 插入。 - DeshDeep Singh
显示剩余3条评论
5个回答

0

这是一个老问题,但是下面的做法可行:

我将标签从

<local:MyClass Name="TagName"></local:MyClass>

目标:

<local:MyClass Name="TagName"/>

但是抛出了以下错误:

Because 'MyClass' is implemented in the same assembly, you must set the x:Name attribute rather than the Name attribute. 

所以我改成了并且工作了:

<local:MyClass x:Name="TagName"/>

然后尝试了一下,也起作用了:

 <local:MyClass x:Name="TagName"></local:MyClass>

0

我测试了你的代码(Windows 7,Visual Studio 2012 Update 4),遇到了同样的情况。在尝试了一些想法之后(几个月前我认为有同样的问题),以下“解决方法”对我有效:

  1. 从MainWindow.xaml中删除“错误行”和命名空间(但保留Employee.cs在项目中)
  2. 构建解决方案!(我认为Visual Studio需要在XAML中实例化对象之前构建Employee.cs)
  3. 添加您的Employee和命名空间,而不使用显式程序集

我期待着听到它是否解决了问题。


在 https://dev59.com/I3HYa4cB1Zd3GeqPHRn7 找到了一个可能的重复问题。 - SSchuette

0

在您的情况下,请使用以下方式: xmlns:local="clr-namespace:WpfApplication"


当我移除程序集值时,我会收到错误消息:“名称“Employee”在命名空间“clr-namespace:WpfApplication1”中不存在”。 - AnishaJain
@Anisha,请尝试清理并重新构建您的解决方案,这个错误不应该出现。 - DeshDeep Singh

0

我没有仔细检查,但是...你尝试过删除assembly=WpfApplication1这部分吗?只留下xmlns:local="clr-namespace:WpfApplication1"


当我移除程序集值时,我会收到错误消息:“名称“Employee”在命名空间“clr-namespace:WpfApplication1”中不存在”。 - AnishaJain
1
奇怪...这个错误一点意义都没有。试着删除那行XAML代码,重新构建,然后再添加进去 :/ - almulo

0

我曾经遇到过类似的问题。尝试了重建、清理、重新启动Visual Studio,再次重建,但都没有解决这个问题。我还删除了assembly=...部分,但也没有帮助。

然后我尝试将项目移动到我的硬盘上(原来在我的文档文件夹中,该文件夹位于映射的网络驱动器上),突然问题就解决了!不知道为什么,但如果其他人仍然遇到这个问题,这个方法可能值得一试。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接