我遇到了一个问题,如果你能为此提供任何建议,我将非常感激。
错误讯息:
System.Windows.Data错误:4:找不到绑定源 参考'RelativeSource FindAncestor, AncestorType = 'System.Windows.Controls.ItemsControl', AncestorLevel = '1'”。 BindingExpression:路径= HorizontalContentAlignment; 的DataItem = NULL; target元素是'TreeViewItem'(Name ='');目标 property是'HorizontalContentAlignment'(类型'HorizontalAlignment')
我有一个树视图控件(C#WPF .NET 4.0),通过在xaml中使用datatemplate或手动将几个项添加到此树视图中,并且两者都使用数据绑定。
当收到新的数据结构时,我需要清除treeview中的所有项目并通过treeview_Control.Items.Clear()
重新生成新项目,从GUI的角度来看似乎工作正常,但当我看到Visual Studio上的输出窗口时,它显示如上所述的几条错误消息。
我试图寻找解决方案并尝试了几种方法,但还没有运气。有人刚建议忽略这个错误信息,但我真的想清除它。
如果您有任何想法,请帮助我。
答案 0 :(得分:3)
对不起,这是评论,但我不能放在评论部分
你可以尝试在TreeView上添加ItemContainerStyle
并查看它是否修复了错误,我们在ListView
中遇到了同样的问题,这是我们可以找到的唯一解决方法来消除错误。
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="HorizontalContentAlignment" Value="Left"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
</Style>
</TreeView.ItemContainerStyle>
答案 1 :(得分:0)
我有同样的问题。当我通过ViewModel从treeview中删除项目时,我收到了同样无害的错误消息。 我在UserControl.Resources中为TreeViewItem定义了样式。 在该风格中也是用于内容对齐的设置器。
<Style TargetType="TreeViewItem" x:Key="myTreeViewItemStyle"
BasedOn="{StaticResource {x:Type TreeViewItem}}">
<Setter Property="HorizontalContentAlignment"
Value="Left" />
<Setter Property="VerticalContentAlignment" Value="Center"/>
...</Style>
对我有帮助的是TreeView中的addint ItemContainerStyle referenc。
<TreeView ItemsSource="{Binding Items}" ItemContainerStyle="{StaticResource ResourceKey=myTreeViewItemStyle}">
答案 2 :(得分:0)
我终于找到了适合我的解决方案。我首先在我的 App.xaml 中添加了一个全局样式:
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="HorizontalContentAlignment" Value="Left" />
<Setter Property="VerticalContentAlignment" Value="Top" />
</Style>
我还必须将以下内容添加到我的 TreeView:
<TreeView.ItemContainerStyle>
<Style
BasedOn="{StaticResource {x:Type TreeViewItem}}"
TargetType="{x:Type TreeViewItem}">
</Style>
</TreeView.ItemContainerStyle>
出于某种原因,在我的案例中,BasedOn 属性是缺失的部分。