wpf - 如何防止 d :DataContext binding 引起的设计时错误

标签 wpf mvvm design-time

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

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

有办法解决这个问题,还是我必须删除与 ViewModel 的绑定(bind)?

最佳答案

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

关于wpf - 如何防止 d :DataContext binding 引起的设计时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11138209/

相关文章:

c# - 扩展的WPF工具包-WatermarkPasswordBox防止输入回车值

wpf - 为什么 ListCollectionView.CustomSort 这么慢?

silverlight - WIndows Phone 中的 Grid 和 ItemsControl.ItemContainerStyle

c# - 在 Visual Studio 中启用要在设计时单击的按钮?

c# - Visual Studio 设计时属性 - 表单列表下拉列表

c# - WPF MVVM 绑定(bind) Windows 页面中不同 UserControls 的列表

wpf - Canvas 内标签的 VerticalAlignment ="Stretch"不起作用

WPF - 宽度为 ="*"的 DataGrid 列,但 MinWidth 以适合内容

c# - 在 Mahapps.Metro 中设置 WindowButtonCommands 样式

delphi - 如何修复具有 TFont 属性的 Delphi 组件在设计时获取 "cannot assign NIL to a TFont"?