XAML XMLNS:Local C#

6

我正在学习MVVM教程,以下是我在Xaml中编写的代码:

<Window x:Class="WPFMVVM.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:WPFMVVM; assembly=WPFMVVM"
    Title="MainWindow" Height="388" Width="545">

xmlns:local这一行代码报错,提示WPFMVVM程序集未被引用,但实际上我正在使用该程序集。

有人知道是为什么吗?

谢谢

4个回答

13

你不能在那里放置空格,如果你是在汇编程序中工作,就不要指定 assembly

xmlns:local="clr-namespace:WPFMVVM"

assembly参数用于引用程序集。另请参阅XAML 命名空间的 MSDN 文章

如果引用的clr-namespace与引用自定义类的应用程序代码在同一个程序集中定义,则可以省略assembly。或者,对于这种情况的等效语法是指定assembly=,没有跟在等号后面的字符串标记。


它又停止工作了吗?(因为您删除了之前的评论) - H.B.
嗨,是的,有这个问题。希望在你看到之前我已经删除了它。问题仍然存在。谢谢。 - Darren Young
是的,这是一个单一的项目,其中命名空间如上所述。我需要在Xaml中引用它。但是它并没有起作用。在网上找了很多人也遇到了这个问题,但我找不到解决办法。谢谢。 - Darren Young
1
MSDN是不正确的。可以省略是100%错误的。必须省略才是正确的做法。如果你通过assembly=指定程序集,你会发现如果你正在引用当前的而不是已经引用的程序集,则应用程序将无法编译。 - user1228
哎呀,我搞砸了。我错了...或者至少在.NET 4.0上是这样的。我发誓我记得很久以前就有这个问题了。可能是与使用XmlnsDefinitionAttribute有关,但它不能在同一程序集中使用。早上好啊。 - user1228
显示剩余7条评论

5

不确定这是否有帮助,但我在两个不同的项目中都遇到了同样的问题,并成功解决。我右键单击项目,然后点击构建。一旦构建完成,错误就消失了。虽然我不是xaml专家,但是看着代码,它说xmlns:myns="clr-namespace:somethingorother"。如果它是一个clr-namespace,那么它必须被编译以便存在。


2
在xaml构建器中存在一个bug。 第一次构建失败,导致未能创建debug\obj中的所有必需文件。 第二次构建时,会在debug\obj中创建更多的文件,但并非全部用于xaml的必需文件。 如果您第三次构建,则最终会创建应该在debug\obj中的所有文件,并且xaml将被编译。
这就是为什么当您清理或重新构建解决方案时,问题会再次出现,直到您构建/重新构建解决方案为止。
只有当命名空间与xaml位于同一程序集中时,才会出现此问题。如果命名空间位于另一个程序集中,并且该程序集存在,则将成功构建。如果另一个程序集不存在,则显然构建将失败。

2

有一个已知的问题。 你正在使用64位机器。在开发过程中,只需设置x86构建配置。


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