VS设计时DataContext(样本数据)包含异常

时间:2019-03-30 00:22:02

标签: c# wpf xaml design-time visual-studio-designer

应用程序

这是一个WPF应用程序,旨在在客户端之间发送文件。我正在研究一个旨在显示已发送文件,其收件人等的列表的用户控件。

设置

我正在尝试设置控件的样式,但是我需要示例数据来填充它。在these instructions之后,我创建了一个扩展SampleFilesSource.cs的{​​{1}}。它会生成一个视图的视图模型的实例,该实例中填充了DataSourceProvider个随机的近期文件。

接下来,在视图中,我以此设置设计时间ObservableCollection

DataContext

但是什么都没有出现……发生了什么事?

数据绑定异常

好吧,让我们看看。 Blend中的“数据”窗格使我们可以查看设计时<d:UserControl.DataContext> <sample:SampleFilesSource/> </d:UserControl.DataContext> 中可用于绑定的内容。让我们来看看。

Exception inside DataContext

这很有趣。我的DataContext中有一个例外。 “数据”窗格不显示任何值,仅显示可以绑定到的字段。那么我如何窥视异常的DataContext?我可以绑定吗?

绑定到它

不幸的是……实际上,当我尝试Message时,输出任何文本的唯一绑定是“(Collection)”。这些字段在{Binding Data.RecentFiles}对象下可见,但是没有任何值。

但是,如果我将运行时Data设置为示例数据生成器怎么办?只需从DataContext标记中删除那一点d:,然后进行调试...仍然没有运气。通过查看实时可视树,我可以看到DataContext绑定到了视图模型的实例。有趣的是,这次数据上下文中唯一的一个是DataContext字段。

运行时没有Error字段,并且Data字段是Error的实例。我认为为空。属性资源管理器只有一个空框,没有选项可以查看它。我认为在调试会话中没有出现未处理的异常很奇怪。它以某种方式卡在Exception中?

调试

除了清理,重建,重新启动VS,重新启动计算机以及其他我已经尝试过的方法之外,我还能做些什么来窥视DataContextHere's一个方便的小指南,用于将调试器附加到Visual Studio的设计器过程。太酷了!

我只能从调试器中学到一些东西:

  • 由我的Message生成的视图模型是有效的,看起来不错,没有引发异常。
  • 我的DataSourceProvider的{​​{1}}字段在我离开代码时为空。

所以我只能说,该异常发生在我调用DataSourceProvider之后,而在设计者得到它之前,它就交给了生成的Error

结论

我很困惑。有什么想法吗?

更新

我创建了一个共享的最低限度示例,并确保确实在表达式混合的“数据”窗格中显示了该异常。但是,实际上我可以绑定到示例中生成的样本数据,所以现在我认为异常是红色鲱鱼,而我的问题出在其他地方。我什至不确定是否有例外,“数据”窗格只是显示它的作用,因为那里可能有例外。

Here's是其他人想要窥视的示例。

1 个答案:

答案 0 :(得分:1)

您可以显示一些代码吗? 您可以通过简单的方式查看问题,可以尝试绑定单个值。如果成功,则可以证明您的绑定部分没有问题。然后,您可以从数据模板开始。