我正在尝试将我的viewmodel“挂钩”为我的View的DataContext。我将使用应用程序范围的一个视图到视图模型方案。
我喜欢使用以下方法进行附加(它成功完成)的想法:
<UserControl ......Window Stuff.......>
<UserControl.DataContext >
<vm:MyViewModel/>
</UserControl.DataContext>
</UserControl>
然而,xaml编辑器在<vm:MyViewModel/>
下放置了一条紫色的波浪线,而hovertext则给出了错误
"Cannot create instance of vm:MyViewModel"
但是它正确地构建/运行我的应用程序并呈现数据,方法:
<UserControl>
<UserControl.Resources>
<DataTemplate DataType="{x:Type vm:MyViewModel}">
<vw:MyView/>
</DataTemplate>
</UserControl.Resources>
</UserControl>
不显示我的数据,尽管它似乎是可接受的代码。
注释掉DataContext引用实际上只是手动编辑控件。我做错了什么/我忘了什么?
提前致谢! :)
答案 0 :(得分:0)
视图模型的构造函数中可能存在阻止模型在Visual Studio中实例化的内容。
尝试在视图模型的构造函数中完成任何操作之前添加return
语句,重建并查看错误是否消失。
这是一个扩展方法,用于确定当前进程是否在visual studio中:
public static class Extensions
{
/// <summary>
/// Extension method to determine if the current process is executing
/// code within the Visual Studio designer or not.
/// </summary>
public static bool IsVisualStudioDesigner( this Process process )
{
return process.MainModule.ModuleName.Contains( "devenv.exe" );
}
}
然后在你的构造函数中:
public ctor()
{
if ( Process.GetCurrentProcess().IsVisualStudioDesigner() )
return;
// do constructor stuff
}