3

我遇到了一个问题,如果您能为此提供任何建议,我将不胜感激。

错误信息:

System.Windows.Data 错误:4:找不到与引用'RelativeSource FindAncestor,AncestorType='System.Windows.Controls.ItemsControl',AncestorLevel='1''的绑定源。BindingExpression:Path=Horizo​​ntalContentAlignment; 数据项=空;目标元素是'TreeViewItem'(名称='');目标属性是“Horizo​​ntalContentAlignment”(类型“Horizo​​ntalAlignment”)

我有一个树视图控件(C# WPF .NET 4.0),并且通过在 xaml 中使用数据模板或手动将几个项目添加到此树视图中,并且都使用数据绑定。

当收到新的数据结构时,我需要清理树视图中的所有项目并重新生成新的项目,treeview_Control.Items.Clear()从 GUI 的角度来看它似乎工作正常,但是当我在 Visual Studio 上看到输出窗口时,它显示了几条如上所述的错误消息。

我试图寻找解决方案并尝试了几种方法,但还没有运气。有人刚刚建议忽略此错误消息,但我真的很想清除它。

如果您有任何想法,请帮助我。

4

3 回答 3

3

抱歉,这是一条评论,但我无法进入评论部分

您可以尝试ItemContainerStyle在 TreeView 上添加 a 并查看它是否修复了错误,我们在 a 中遇到了同样的问题,ListView这是我们可以找到的唯一解决方法来消除错误。

<TreeView.ItemContainerStyle>
    <Style TargetType="{x:Type TreeViewItem}">
        <Setter Property="HorizontalContentAlignment" Value="Left"/>
        <Setter Property="VerticalContentAlignment" Value="Center"/>
    </Style>
</TreeView.ItemContainerStyle>
于 2013-09-10T21:54:20.283 回答
0

我有同样的问题。当我通过 ViewModel 从树视图中删除项目时,我收到了同样无害的错误消息。我在 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 中添加 ItemContainerStyle 参考。

<TreeView ItemsSource="{Binding Items}" ItemContainerStyle="{StaticResource ResourceKey=myTreeViewItemStyle}">
于 2014-02-06T10:53:31.460 回答
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 属性是缺失的部分。

于 2021-02-03T03:30:03.510 回答