我遇到了与此处所述相同的问题http://mvvmlight.codeplex.com/workitem/7571我在github上创建了一个项目,您可以找到一个可以重现此问题的项目。该项目在https://github.com/WimTilburgs/WebShopV7。
我的Xaml代码中提出问题的部分是这一部分:
<common:LayoutAwarePage.DataContext>
<Binding
Path="Main"
Source="{StaticResource Locator}" />
</common:LayoutAwarePage.DataContext>
一旦我打开页面就会出现此错误,当我重建它时会消失。在这种情况下,设计时数据不会显示在Visual Studio中。在Blend中没有问题,我可以看到设计时间数据。
提前谢谢
答案 0 :(得分:0)
嗯,我遇到了类似的问题。奇怪的是,解决方案与Wim's正好相反。起初我在页面声明区域中使用了DataContext绑定:
<common:PageBase
x:Class="Project.Pages.MainPage"
x:Name="PageRoot"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Project"
xmlns:common="using:Project.Common"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:ignore="http://www.ignore.com"
mc:Ignorable="d ignore"
DataContext="{Binding Main, Source={StaticResource Locator}}">
并且DataContext声明导致&#34; Object与目标类型不匹配。&#34;设计模式中的异常(构建和运行应用程序时没有错误)。在花了很多时间检查我的ViewModel,App.xaml等的每一行以找到错误后,我发现唯一的解决办法就是将绑定放到这个:
<common:PageBase.DataContext>
<Binding Path="Main" Source="{StaticResource Locator}"></Binding>
</common:PageBase.DataContext>
然后重新编译。更奇怪的是,接下来我回到了原始数字,异常不再出现......
似乎改变绑定声明的区域就是这样或那样的伎俩。知道为什么会这样吗?
希望这篇文章可以节省其他人遇到同样问题的时间。