我在调试 WPF 中的绑定错误时遇到的一种更清晰/更清晰的方法通常是链接的(但使用的是旧的、损坏的链接),目前可以在这里找到:http ://www.zagstudio.com/blog/486 #.UhyT8fNwbs0
具体来说,使用 .Net 3.5 中引入的调试功能的方法,使用附加属性PresentationTraceSources.TraceLevel
并允许您指定特定的跟踪级别来调查您的绑定问题。
在这里总结一下:
添加以下命名空间:
<Window
<!-- Window Code -->
xmlns:diagnostics="clr-namespace:System.Diagnostics;assembly=WindowsBase"
/>
并在您的绑定表达式中,设置附加属性。在我的示例中,我使用了Cars
具有属性的对象列表Name
,并且错误地将其DisplayMemberPath
列为Names
:
<ListBox ItemsSource="{Binding Path=Cars, diagnostics:PresentationTraceSources.TraceLevel=High}" DisplayMemberPath="Names" />
这会在“输出”窗口中产生以下消息(出现多次,每次绑定失败一个):
System.Windows.Data Error: 40 : BindingExpression path error: 'Names' property not found on 'object' ''Car' (HashCode=59988153)'. BindingExpression:Path=Names; DataItem='Car' (HashCode=59988153); target element is 'TextBlock' (Name=''); target property is 'Text' (type 'String')
整个链接值得一读,但这是我成功使用的特定技术的要点(以防链接失效)。