1

我正在尝试将我的视图模型作为数据上下文“连接”到我的视图。我将使用一个应用程序范围的视图到视图模型场景。

我喜欢使用以下方法附加的想法(它成功了):

 <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 引用对于手动编辑控件来说真的很痛苦。我做错了什么/我忘记了什么吗?

提前致谢!:)

4

1 回答 1

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
}
于 2012-09-28T18:50:04.520 回答