命名空间" clr-namespace中不存在ViewModel:..."

时间:2015-05-21 13:31:32

标签: c# wpf mvvm visual-studio-2013

我有一个BIG和OLD xaml用户控件,我正在尝试为它添加ViewModel类(做正确的事情)。  在xaml中附加viewmodel的代码是:

xmlns:vm="clr-namespace:Company.Proj.ViewModel;assembly=Company.Proj"
             xmlns:v="clr-namespace:Company.Proj.View;assembly=Company.Proj"
             mc:Ignorable="d">
    <UserControl.Resources>
        <DataTemplate
            DataType="{x:Type vm:SampleVM}">
            <v:MainWindow/>
        </DataTemplate>
    </UserControl.Resources>
    <UserControl.DataContext>
        <vm:SampleVM/>
    </UserControl.DataContext>

以及未来ViewModel的类:

namespace Company.Proj.ViewModel //the namespace is correct
{
    public class SampleVM    // the class is public
    {
        public SampleVM() // void constructor? perhaps not needed here
        {

        }
    }
}

我得到了SampleVM does not exist in the namespace clr-namespace:Company.Proj.ViewModel;assembly=Company.Proj"

我搜索了很多,发现了许多答案。像 The name ViewModel does not exist in the namespace "clr-namespace:Project.ViewModels"

...我试图重建Projec / reopenStudio /更改debug-release-debug /仔细))copypaste assembly和namespece名称......

但没有解决(( 是否有任何其他变体可以将ViewModel连接到View.xaml(可能是我使用过的更好的)或者可以做些什么来解决这个问题?

我的VS版:VS社区2013  12.0.3.1101.00更新4 目标框架4.5.1

编辑:我的问题与上面的链接不同,因为在我的问题中,clr-path中没有错误(请参阅Will的最佳答案)

1 个答案:

答案 0 :(得分:0)

要简单地调试它,您可以尝试以下步骤:

  1. 参加一个新项目。
  2. 添加程序集Company.Proj.dll作为对它的引用。
  3. 尝试使用xmlns:prefix指令映射viewmodel命名空间(或任何其他命名空间)。
  4. PS:正如你在问题中提到的,void构造函数不是问题。它需要一个构造函数来初始化。无法构造函数的类无法初始化(使用factorymethods除外)。

    修改 您可能希望在similar question上看到答案。