【发布时间】:2019-08-09 22:14:15
【问题描述】:
有没有办法在这些错误发生时查看正在实例化哪个 UserControl/Window/etc?
一个典型的错误如下所示:
System.Windows.Data Error: 40 : BindingExpression path error: 'BackgroundColor' property not found on 'object' ''MapContainerViewModel' (HashCode=25350572)'. BindingExpression:Path=BackgroundColor; DataItem='MapContainerViewModel' (HashCode=25350572); target element is 'SolidColorBrush' (HashCode=35109313); target property is 'Color' (type 'Color')
问题?它发生在哪里?在哪个 XAML 文件中?在哪个班?
你得到一个症状列表,却没有病人的名字,这不是很奇怪吗?
在一个小项目中,我可能会知道去哪里找。我目前正在重构一个包含数百个 Windows/UserControls 的 MVVM 项目,其中许多具有相似的绑定路径。
所以我必须对属性名称进行“整个解决方案”搜索,并提供一个候选列表(UserControls/Windows),这些候选对象在实例化时可能会导致绑定错误。
另一个选项是让 Visual Studio 中断并在发生 System.Windows.Data 错误时立即向我显示 XAML。遵循this one 之类的教程,我可以破解代码——但它不指示任何 XAML 或类名。堆栈跟踪没有显示任何内容——因为控件是通过 MEF 自动创建的。
感谢您的帮助。 乍得。
更新:
Live Visual Tree 在这种情况下不起作用,因为有问题的 UserControls/Windows 位于 MEF 容器中并且没有附加。
任何可视化方法都不起作用,因为视图/数据上下文(在本例中为视图模型)是通过 MEF(DI 模式)实例化的,并且正在等待添加到可视化树中。
【问题讨论】:
标签: wpf mvvm data-binding visual-studio-2015 visual-studio-debugging