2

使用 将 ViewModel 附加到 View 是相当方便的 d:DataContext="{d:DesignInstance ViewModel}",但是在这种情况下,View 设计者开始创建 ViewModel 的实例并因异常而崩溃。

例如,我在 ViewModel 中有一个命令,它的可用性取决于从数据库加载的统计信息。可视化设计器无法加载统计信息,并且统计信息保持不变null,因此该命令引发异常并且设计器崩溃。

是否有解决此问题的选项,或者我是否必须删除与 ViewModel 的绑定?

4

3 回答 3

1

通常,您有一个单独的设计视图模型(存根)返回测试数据。您可以从您的真实 ViewModel 继承并设置虚拟默认值,或者拥有一个具有相同命名属性的完全独立的 ViewModel。

我通常发现在 WPF 中将所有内容初始化为某个默认值是一个好主意

于 2012-06-21T12:53:00.380 回答
1

除非您IsDesignTimeCreatable在 DesignInstance 标记中进行设置,否则它实际上不会通过其构造函数实例化数据上下文类。它只会创建一个具有相同“数据形状”的实例。此虚假数据形状的默认内容可以包含空值,因此您需要在使用数据上下文的类中进行修复,这样如果数据未初始化,它们就不会使设计器崩溃。

于 2012-06-21T13:53:02.653 回答
1

好吧,您的视图模型的构造函数在设计时构造数据上下文很累并且失败了。

一个原因可能是。可能是您正在使用配置中的一些数据连接。

最简单的方法是将视图模型的构造函数代码放入 try catch 块中,以便更好地检查其失败的位置。

public class myViewmodel()
{
 public myViewmodel()
{

try
{
// build your data context.
}
catch(Exception ex)
{
//show the messages
}

}

}

于 2012-06-21T14:00:23.893 回答