在一个简单的测试应用程序中使用了IntelliSense for Data Binding,感谢我previously raised question的答案,我现在正试图将我学到的东西应用到实际应用中#&# 39;正在努力。我再一次遇到了一些我不明白的问题。我的代码片段如下 - 我必须更改名称以保护适当信息:
<Page x:Class="MyProject.Views.Pages.MyPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="450"
xmlns:Converters="clr-namespace:MyProject.Converters"
xmlns:ViewModels="clr-namespace:MyProject.ViewModels"
Title="My View"
SnapsToDevicePixels="True" KeepAlive="True" TextOptions.TextFormattingMode="Display">
<Page.Resources>
<BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
<Converters:NullToVisibilityConverter x:Key="NullToVisibilityConverter"/>
</Page.Resources>
<StackPanel d:DataContext="{d:DesignInstance ViewModels:MyViewModel}">
<!-- ... -->
</StackPanel>
</Page>
我在第<StackPanel d:DataContext="{d:DesignInstance ViewModels:MyViewModel}">
行收到了错误消息:
名称&#34; MyViewModel&#34;命名空间中不存在&#34; clr-namespace:MyProject.ViewModels&#34;。
错误没有意义MyViewModel
namspace中存在MyProject.ViewModels
。
有什么建议?我尝试过干净的重建。
答案 0 :(得分:1)
MyProject.ViewModels
namepsace与MyProject.Views.Pages
位于不同的程序集中,似乎有必要将;assembly=MyProject.ViewModels
添加到xmlns:ViewModels="clr-namespace:MyProject.ViewModels
级别:
xmlns:ViewModels="clr-namespace:MyProject.ViewModels;assembly=MyProject.ViewModels"
我认为因为程序引用了程序集,所以我不需要指定程序集,就像我在C#代码文件中使用命名空间时不必指定程序集一样。
答案 1 :(得分:0)
我得到了同样的错误,之前我多次得到它。每次我遇到这个错误,都是因为我有其他错误而我的代码因其他原因而无法编译。一旦我修复了所有其他错误,我的代码编译和VisualStudio找到所有&#39; d:&#39;缺少参考文献......如果它们真的存在。
此外,作为替代方案,如果您使用其默认构造函数实现ViewModel,我建议使用类似的东西(不使用&#39; d:&#39;):
...
</Page>
<Page.DataContext>
<ViewModels:MyViewModel/>
</Page.DataContext>
它将永远解决您的问题。
我还没有尝试过,但也许与Roslyn(新的VS2015编译器)这个问题将会消失。我希望:-)