0

应用

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

设置

我正在尝试设置控件的样式,但我需要示例数据来填充它。按照这些说明,我创建了一个SampleFilesSource.cs扩展DataSourceProvider。它生成视图的视图模型的实例,其中填充了ObservableCollection随机最近的文件。

接下来,在视图中,我设置了设计时间DataContext

<d:UserControl.DataContext>
    <sample:SampleFilesSource/>
</d:UserControl.DataContext>

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

数据绑定异常

好吧,走着瞧。Blend 中的数据窗格允许我们查看设计时DataContext可用于绑定的内容。让我们来看看。

DataContext 中的异常

嗯,这很有趣。我的DataContext. 数据窗格不显示任何值,只显示可以绑定的字段。那么如何查看异常Message?我可以绑定它吗?

绑定到它

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

但是,如果我将运行时设置DataContext为示例数据生成器呢?只需d:DataContext标签中删除那一点并调试......仍然没有运气。通过查看实时可视化树,我可以看到DataContext绑定到视图模型的一个实例。有趣的是,这次 datacontext 中唯一的东西是一个Error字段。

Data运行时没有字段,并且该Error字段是Exception. 我认为它是空的。属性浏览器只有一个空框,没有查看它的选项。我认为调试会话中没有出现未处理的异常很奇怪。它卡在DataContext不知何故?

调试

因此,除了清理、重建、重新启动 VS、重新启动计算机以及我已经尝试过的任何其他方法之外,我还能做些什么来看看Message呢?这是一个方便的小指南,用于将调试器附加到 Visual Studio 的设计器进程。很酷!

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

  • 我生成的视图模型DataSourceProvider是有效的,看起来不错,没有抛出异常。
  • DataSourceProviderError字段在离开我的代码时为空。

所以我只能说异常发生在我调用之后DataSourceProvider.FinishQuery,并且在设计者得到它之前生成的DataContext

结论

我难住了。有任何想法吗?

更新

我创建了一个最小示例来分享,果然异常确实出现在表达式混合的数据窗格中。但是,我实际上可以绑定到示例中生成的示例数据,所以现在我认为异常是红鲱鱼,我的问题在其他地方。我什至不确定是否存在异常,并且“数据”窗格仅显示它的作用,因为那里可能存在异常。

如果其他人想偷看,这是示例。

4

1 回答 1

1

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

于 2019-03-30T08:13:31.947 回答