应用
这是一个 WPF 应用程序,用于在客户端之间发送文件。我正在开发一个用户控件,用于显示已发送文件、其收件人等的列表。
设置
我正在尝试设置控件的样式,但我需要示例数据来填充它。按照这些说明,我创建了一个SampleFilesSource.cs
扩展DataSourceProvider
。它生成视图的视图模型的实例,其中填充了ObservableCollection
随机最近的文件。
接下来,在视图中,我设置了设计时间DataContext
:
<d:UserControl.DataContext>
<sample:SampleFilesSource/>
</d:UserControl.DataContext>
但是什么也没有出现……发生了什么事?
数据绑定异常
好吧,走着瞧。Blend 中的数据窗格允许我们查看设计时DataContext
可用于绑定的内容。让我们来看看。
嗯,这很有趣。我的DataContext
. 数据窗格不显示任何值,只显示可以绑定的字段。那么如何查看异常Message
?我可以绑定它吗?
绑定到它
不幸的是没有......事实上,当我尝试时,我可以输出任何文本的唯一绑定是“(集合)” {Binding Data.RecentFiles}
。字段在对象下可见Data
,但没有任何值。
但是,如果我将运行时设置DataContext
为示例数据生成器呢?只需d:
从DataContext
标签中删除那一点并调试......仍然没有运气。通过查看实时可视化树,我可以看到DataContext
绑定到视图模型的一个实例。有趣的是,这次 datacontext 中唯一的东西是一个Error
字段。
Data
运行时没有字段,并且该Error
字段是Exception
. 我认为它是空的。属性浏览器只有一个空框,没有查看它的选项。我认为调试会话中没有出现未处理的异常很奇怪。它卡在DataContext
不知何故?
调试
因此,除了清理、重建、重新启动 VS、重新启动计算机以及我已经尝试过的任何其他方法之外,我还能做些什么来看看Message
呢?这是一个方便的小指南,用于将调试器附加到 Visual Studio 的设计器进程。很酷!
我只能从调试器中学到一些东西:
- 我生成的视图模型
DataSourceProvider
是有效的,看起来不错,没有抛出异常。 - 我
DataSourceProvider
的Error
字段在离开我的代码时为空。
所以我只能说异常发生在我调用之后DataSourceProvider.FinishQuery
,并且在设计者得到它之前生成的DataContext
。
结论
我难住了。有任何想法吗?
更新
我创建了一个最小示例来分享,果然异常确实出现在表达式混合的数据窗格中。但是,我实际上可以绑定到示例中生成的示例数据,所以现在我认为异常是红鲱鱼,我的问题在其他地方。我什至不确定是否存在异常,并且“数据”窗格仅显示它的作用,因为那里可能存在异常。
如果其他人想偷看,这是示例。