智能感知数据绑定无法正常工作 - 后续工作

时间:2015-04-02 09:50:33

标签: wpf xaml data-binding visual-studio-2013 intellisense

在一个简单的测试应用程序中使用了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。 有什么建议?我尝试过干净的重建。

2 个答案:

答案 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编译器)这个问题将会消失。我希望:-)