如果我在没有<DataTemplate>
的情况下使用以下代码,那么它正在工作,我只能看到SoftwareVersion
,当我添加<DataTemple>
时会抛出异常。知道为什么吗?
ObservableCollection<Note> AllNotes
<TreeView Name="tree" ItemsSource="{Binding Path=AllNotes}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate DataType="{x:Type m:Note}" ItemsSource="{Binding Path=ListIssuesType}">
<TextBlock Text="{Binding Path=SoftwareVersion}" Margin="2" />
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
<DataTemplate DataType="{x:Type m:IssueType}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=IssueTypeName}" />
</StackPanel>
</DataTemplate>
</TreeView>
答案 0 :(得分:0)
根本不清楚为什么您要向控件添加DataTemplate
。但很明显为什么你得到例外:你已经将DataTemplate
对象添加为TreeView
的直接子对象,这使它成为Items
集合中的一个项目。它&#34;模板&#34;自然变得完全无关紧要;您告诉控件只将该对象包含在视图中作为元素。
当然,现在Items
集合非空,您不能发送ItemsSource
属性。
因此异常的修复是&#34;不要这样做&#34;。即停止尝试将DataTemplate
元素作为树视图项目列表中的项目。
除此之外,你的问题中没有足够的上下文来说明你应该使用DataTemplate
对象的方式。据推测,您打算将其用作树视图中实际数据项的模板的一部分;也许它需要以某种方式纳入HierarchicalDataTemplate
。
但是如果没有更详细的说明代码现在做什么以及你想要它做什么,以及你提供一个好的Minimal, Complete, and Verifiable example清楚地说明你的场景,我不会看到一个好方法解决你的问题的这一部分。如果您在定义数据模板方面仍需要帮助,请发布一个提供必要详细信息的新问题。