gpt4 book ai didi

wpf - ListBox.DisplayMemberPath 未按预期工作。我该如何调试呢?

转载 作者:行者123 更新时间:2023-12-05 06:46:06 26 4
gpt4 key购买 nike

    <ListBox ItemsSource="{Binding Path=Commands}" DisplayMemberPath="Name"/>

DisplayMemberPath 不起作用,ListBox 显示 Commands 集合成员的默认 ToString 结果。是否可以调试它,例如,通过将一些信息打印到“输出”窗口?

Visual Studio 2010,WPF 应用程序项目。绑定(bind)成功,我看到了 Commands 集合的所有成员。但是显示不对。

附加信息。如果我将 Path=Commands 更改为不存在的 Path=Commands1,我会在“输出”窗口中看到错误消息。但是DisplayMemberPath 中没有任何关于错误的信息。

最佳答案

我在 WPF 中遇到的调试绑定(bind)错误的更清晰/更清晰的方法之一通常是链接(但使用旧的、损坏的链接),目前可以在这里找到:http://www.zagstudio.com/blog/486#.UhyT8fNwbs0

具体来说,该方法使用 .Net 3.5 中引入的调试功能,使用附加属性 PresentationTraceSources.TraceLevel 并允许您指定特定的跟踪级别来调查您的绑定(bind)问题。

总结一下:

您添加以下命名空间:

<Window
<!-- Window Code -->
xmlns:diagnostics="clr-namespace:System.Diagnostics;assembly=WindowsBase"
/>

然后在您的绑定(bind)表达式中,设置附加属性。在我的示例中,我使用了具有 Name 属性的 Cars 对象列表,并且错误地将 DisplayMemberPath 列为 Names :

<ListBox ItemsSource="{Binding Path=Cars, diagnostics:PresentationTraceSources.TraceLevel=High}" DisplayMemberPath="Names" />

这会在“输出”窗口中产生以下消息(出现多次,每次失败绑定(bind)一次):

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')

整个链接值得一读,但这是我成功使用的特定技术的要点(以防链接失效)。

关于wpf - ListBox.DisplayMemberPath 未按预期工作。我该如何调试呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18463781/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com