C# wpf TreeView HierarchycalDataTemplate相关
我有一个关于HierarchycalDataTemplate的问题。是否可以通过代码继续添加HierarchycalDataTemplate,或者没有办法这样做。我这样问是因为在我稍后的例子中,我不知道是否需要比现在更多的子节点 下面你可以看到我的树视图:C# wpf TreeView HierarchycalDataTemplate相关,c#,wpf,vb.net,treeview,C#,Wpf,Vb.net,Treeview,我有一个关于HierarchycalDataTemplate的问题。是否可以通过代码继续添加HierarchycalDataTemplate,或者没有办法这样做。我这样问是因为在我稍后的例子中,我不知道是否需要比现在更多的子节点 下面你可以看到我的树视图: <TreeView Background="#FFF0F0F0" BorderBrush="#FFE5E2DB" IsEnabled="{Binding isAllesEnabled}" ItemsSource="{Binding Li
<TreeView Background="#FFF0F0F0" BorderBrush="#FFE5E2DB" IsEnabled="{Binding isAllesEnabled}" ItemsSource="{Binding LijstRechten, UpdateSourceTrigger=PropertyChanged, NotifyOnSourceUpdated=True}" Margin="0,0,0,0" Name="dgStamOverzichtGebruikerRechten" VirtualizingStackPanel.IsVirtualizing="True" VirtualizingStackPanel.VirtualizationMode="Recycling">
<TreeView.ItemTemplate>
<!-- Top Level -->
<HierarchicalDataTemplate ItemsSource="{Binding Childs}">
<CheckBox IsChecked="{Binding isChecked}" Content="{Binding naam}" />
<!-- 1st Child Level -->
<HierarchicalDataTemplate.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Childs}">
<CheckBox IsChecked="{Binding isChecked}" Content="{Binding naam}" />
<!-- 2nd Child Level -->
<HierarchicalDataTemplate.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Childs}">
<CheckBox IsChecked="{Binding isChecked}" Content="{Binding naam}" />
<!-- 3rd Child Level -->
<HierarchicalDataTemplate.ItemTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding isChecked}" Content="{Binding naam}" />
</DataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}"/>
<Setter Property="Margin" Value="2"/>
<!--<Setter Property="IsSelected" Value="{Binding isSelected, Mode=TwoWay}"/>
<EventSetter Event="Selected" Handler="TreeViewSelectedItemChanged" />-->
</Style>
</TreeView.ItemContainerStyle>
</TreeView>
提前谢谢 对于你的问题,假设所有的孩子都属于同一类型。。只需在窗口的资源
中定义一个HierarchycalDataTemplate
,而不使用任何x:key
,并将数据类型
作为子对象的类型…整个树将填充
<HierarchicalDataTemplate DataType="{local:YourParentType}"
ItemsSource="{Binding Childs}">
<CheckBox IsChecked="{Binding isChecked}" Content="{Binding naam}" />
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{local:YourChildType}"
ItemsSource="{Binding Childs}">
<CheckBox IsChecked="{Binding isChecked}" Content="{Binding naam}" />
</HierarchicalDataTemplate>
这里假设local是定义子类的名称空间(xmlns)Hi,感谢您的回复,我无法理解数据类型部分,我使用的是usercontrol和viewmodel,我是否必须向usercontrol的xmlns部分添加一些内容?如果所有子对象都属于同一个ViewModel,则数据类型将是您的ViewModel。您可以共享子对象的类型及其定义的命名空间吗?您好,我当然可以提供这些信息,名称空间是MyProject。设置和im使用的对象是:用于treeview项源的clsTreeViewParent和用于HierarchicalDataTemplate项源的clsTreeViewChild。我尝试了一些方法,但不起作用。我确实将DataType=“{local:YourChildType}”更改为DataType=“{x:Type vm:clsTreeViewParent}”,其中vm是我的usercontrol上的xmlns,然后顶部节点将正确显示,但所有其他节点都缺少引用,只显示为MyProject.settings.clsTreeViewchilds.hi,在这种情况下,因为您的父母和子女属于两种不同的类型。。你需要两个tempalates。。。我希望i类儿童,e类clsTreeViewChild会有相同类型的儿童。然后你可以参考我更新的答案