名称空间“clr-namespace:”中不存在该名称

时间:2014-03-02 13:40:13

标签: wpf vb.net visual-studio-2012 mvvm

这是我的MainWindowViewModel.vb

Public Class MainWindowViewModel
Inherits ViewModelBase

Public Sub New()

End Sub

Private _test As String = "Success"
Public Property Test() As String
    Get
        Return _test
    End Get
    Set(ByVal value As String)
        _test = value
        RaisePropertyChanged()
    End Set
End Property

End Class

这是我的MainWindow.xaml

<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Koala"  
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"  
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
    <local:MainWindowViewModel x:Key="MainWindowViewModelDataSource" d:IsDataSource="True"/>
</Window.Resources>
<Grid DataContext="{Binding Source={StaticResource MainWindowViewModelDataSource}}">
    <TextBox HorizontalAlignment="Left" Height="23" Margin="156,103,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120" Text="{Binding Test}"/>
</Grid>
</Window>

这是我得到的错误:

Error   1   The name "MainWindowViewModel" does not exist in the namespace "clr-namespace:Koala".   \\psf\Dropbox\Programming\Windows\Koala\Koala\MainWindow.xaml   7   3   Koala

我可以在Window标记中添加对名称空间Koala的引用而不会出现问题。当我输入<local:时,我可以选择使用MainWindowViewModel标记。每当我添加x:Key时,就会发生错误。 (重新)构建不起作用,重启VS2012不起作用。我搜索了几十个类似的问题,但我无法找到解决方案。

我尝试通过Blend和VS2012添加引用,但它们都不起作用。奇怪的是,我能够启动调试模式并在屏幕上看到我的表单。此外,Success中还会显示TextBox

2 个答案:

答案 0 :(得分:0)

将您的MainWindowViewModel类包装在

Namespace ViewModels
  Public Class MainWindowViewModel
  Inherits ViewModelBase
...
  End Class
End Namespace

然后在窗口中添加一个新的命名空间:

xmlns:vm="clr-namespace:Koala.ViewModels"

在资源声明中使用vm前缀而不是local。

答案 1 :(得分:0)

我遇到了类似的问题,两个不同的dll中存在两个UserControl。我通过向xaml添加汇编引用解决了这个问题,如下所示

<Window x:Class="View.MainWindowView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:v1="clr-namespace:View1;assembly=MyAssemblyName1"
    xmlns:v2="clr-namespace:View2;assembly=MyAssemblyName2"
    Title="MainWindow" Height="350" Width="525">
    <Grid>
        <v1:UserControl1/>
        <v2:UserControl2/>
    </Grid>
</Window>

我的项目是一个.Net4.5项目,其中包含两个包含两个UserControl和一个主WPF应用程序的dll

请注意添加

assembly=MyAssemblyName1