Visual Studio 2008 Designer似乎不喜欢引用MVVM-Light ViewModelLocator的UserControls。我收到如下错误消息:
无法创建“MyUserControl”类型的实例。
例如,如果MyUserControl使用ViewModelLocator建立其DataContext,则以下XAML将导致此行为。
<Page x:Class="MyProject.Views.MainView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Views="clr-namespace:MyProject.Views"
>
<Grid>
<Views:MyUserControl/>
</Grid>
</Page>
MyUserControl非常简单:
<UserControl x:Class="MyProject.Views.MyUserControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
DataContext="{Binding MyNestedViewModel, Source={StaticResource Locator}}"
>
<Grid>
<TextBlock>Hello</TextBlock>
</Grid>
</UserControl>
“MyNestedViewModel”属性只是实例化MyNestedViewModel类的一个实例,它的默认构造函数中绝对没有代码。
两个问题:
请注意,一切都在运行时完美运行。我在设计时才遇到问题。但我讨厌盲目编码XAML。
答案 0 :(得分:0)
我在VS 2010中遇到了同样的情况。我刚刚发现的部分解决方法......
在您的UserControl中,将DataContext
更改为d:DataContext
<UserControl x:Class="MyProject.Views.MyUserControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
d:DataContext="{Binding MyNestedViewModel, Source={StaticResource Locator}}"
>
<Grid>
<TextBlock>Hello</TextBlock>
</Grid>
</UserControl>
不幸的是,我不能让它在UserControl YET中显示数据,只是UserControl本身。