你如何在加载时调试wpf relativesource抛出错误?

时间:2009-01-15 14:28:52

标签: wpf exception binding listbox relativesource

我正在使用包含ListBox的WPF对话框窗口。列表框可以显示“图标”和“列表”视图。为此,我们使用了动态应用于ListBoxItem的{​​{1}}个样式,以及一对相应的ListBox s。它就像它显示得很漂亮。但是,加载此对话框时,我们会收到几十个绑定错误,例如:

System.Windows.Data错误:4:无法找到与引用'RelativeSource FindAncestor绑定的源,AncestorType ='System.Windows.Controls.ItemsControl',AncestorLevel ='1''。 BindingExpression:路径= VerticalContentAlignment;的DataItem = NULL; target元素是'ListBoxItem'(Name =''); target属性是'VerticalContentAlignment'(类型'VerticalAlignment')

我们的理论是样式和模板在ItemsPanelTemplate之前加载,并且无法使用以下代码找到它们绑定的属性:

ListBox

<Setter Property="VerticalContentAlignment" Value="{Binding Path=VerticalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"/> 初始化并应用样式和模板之前,这似乎发生了一次或多次。对话框完成初始化后,错误停止。

之前有没有遇到过这个?任何人都可以建议我们可能忽略的解决方案吗?

2 个答案:

答案 0 :(得分:0)

这里有这样的内容:

http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/db050ce6-d084-41ad-9a31-c01831687683

被认为是一个“已知”问题。

答案 1 :(得分:0)

我在这里找到了解决方法:

http://blog.jtango.net/2009/05/08/using-a-grid-as-the-itemspanel-for-a-listbox-in-wpf-binding-errors/

您可以使用ItemContainerStyle上的ListBox设置样式。