标签';ViewModelLocator';在XML命名空间clr命名空间XXX中不存在
本文关键字:命名空间 XXX 不存在 clr ViewModelLocator 标签 XML | 更新日期: 2023-09-27 18:27:45
我尝试了许多其他解决方案,但都没有成功。我有一个名为ViewModelLocator
的类,它位于我的可移植类库中。它有一个名为ViewModels
的属性,属于Dictionay<K, V>
类型
然后我有一个WindowsPhone8项目,它引用了可移植类库。我在WP8 app.xaml中添加了以下内容:
<Application
x:Class="Kaizen.WP8.Test.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:test="clr-namespace:Foo.Core.Portable.ViewModel;assembly=Foo.Core.Portable">
<Application.Resources>
<test:ViewModelLocator x:Key="ViewModelLocator">
<test:ViewModelLocator.ViewModels>
<test:SampleViewModel x:Key="sampleVM"/>
</test:ViewModelLocator.ViewModels>
</test:ViewModelLocator>
</Application.Resources>
</Application>
当我在标记上按F12时,它会导航到我的pcl中正确的类和/或属性。这表明VS知道这些对象,但当我尝试构建时,我收到以下错误:
标记"ViewModelLocator"在XML命名空间中不存在'clr命名空间:Foo.Core.Portal.ViewModel;assembly=Foo.Core.Pportable'.
XML命名空间中不存在标记"SampleViewModel"'clr命名空间:Foo.Core.Portal.ViewModel;assembly=Foo.Core.Pportable'.
有人能帮忙吗?
[更新]我在我的pcl项目中引用了mvvm-light的pcl版本。这就是ViewModelLocator
类的样子:
public class ViewModelLocator
{
public dynamic this[string viewModelName]
{
get
{
if (this.ViewModels.ContainsKey(viewModelName))
{
return this.ViewModels[viewModelName];
}
else
{
return null;
}
}
}
public Dictionary<string, ViewModelBase> ViewModels { get; set; }
public ViewModelLocator()
{
this.ViewModels = new Dictionary<string, ViewModelBase>();
}
}
我的WP8项目还使用了mvvm轻型pcl程序集。我注意到,如果我使用ViewModelBase
类作为字典值,那么当我得到错误时。这是因为在两个项目之间使用mvvm-light pcl有问题?![更新]
非常感谢!!亲切问候,
我刚刚在一个.Net 4.5项目中遇到了这个问题。对我来说,解决方案是更改为.Net 4.0,忽略警告,然后改回.Net 4.5。然后问题就解决了。
不知道这对其他人来说是否可行,但对我来说有效。
致以最良好的问候。
好吧,所以我不确定我第一次尝试时做错了什么,但我重新创建了解决方案,并执行了或多或少相同的步骤,我没有再次收到错误?!o_o
我知道这有点晚了,但我在WPF Desktop应用程序和控件库方面也遇到了同样的问题。库的默认目标框架是.Net 4,但我在Visual Studio中创建后的桌面应用程序默认情况下是使用.Net 4客户端配置文件创建的。我将桌面应用程序从.Net 4客户端配置文件更改为.Net 4,它起作用了。