我有一个WPF MVVM应用程序,它包含一个自定义树网格视图,可从一个可观察的集合中获取其信息。
如果我在不改变observable集合中的任何内容的情况下运行应用程序,它运行正常。
但是,如果我更改了observable集合中的项目,我会收到以下错误:
System.Windows.Data Error: 4 : Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='System.Windows.Controls.ItemsControl', AncestorLevel='1''. BindingExpression:Path=HorizontalContentAlignment; DataItem=null; target element is 'TreeListViewItem' (Name=''); target property is 'HorizontalContentAlignment' (type 'HorizontalAlignment')
关于如何解决这个问题的任何想法?
答案 0 :(得分:2)
根据此very short blog post,当您尝试绑定ListBoxItems
时,可能会发生此错误。现在在上面的错误中,你遇到了TreeListViewItem
目标元素的问题,但我肯定能看出这可能是同样的问题。您可以尝试使用这两种方法中的一种来解决这个问题吗?两者都只是为TreeListViewItem创建自定义样式(或者在他的情况下为ListBoxItem创建)。这两个建议是:
将OverridesDefaultStyle设置为true,然后忽略值
<Style x:Key="DeviceContainerStyle" TargetType="{x:Type ListBoxItem}">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="VerticalContentAlignment" Value="Stretch"/>
或者:
<Style x:Key="DeviceContainerStyle" TargetType="{x:Type ListBoxItem}">
<Setter Property="OverridesDefaultStyle" Value="True"/>
您当然会为TreeListViewItem
而不是ListBoxItem
更改这些内容。 =)