如何防止由 d:DataContext 绑定引起的设计时错误



ViewModel 附加到视图相当方便 d:DataContext="{d:DesignInstance ViewModel}" ,但是在这种情况下,视图设计器开始创建视图模型的实例,并因异常而自行崩溃。

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

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

除非您在 DesignInstance 标记中设置IsDesignTimeCreatable,否则它实际上不会通过其构造函数实例化数据上下文类。 它只会创建一个具有相同"数据形状"的实例。 此仿数据形状的默认内容可以包含 null,因此需要修复的内容位于使用数据上下文的类中,以便在数据未初始化时它们不会使设计器崩溃。

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

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

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

喜欢

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

}

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

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

相关内容

最新更新