首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >wpf TreeView HierarchicalDataTemplate相关

wpf TreeView HierarchicalDataTemplate相关
EN

Stack Overflow用户
提问于 2013-09-30 14:53:16
回答 1查看 2.7K关注 0票数 0

我有一个关于HierarchicalDataTemplate的问题。是否可以通过代码继续添加HierarchicalDataTemplate,或者没有办法这样做。我问这个问题是因为在我的例子中,我不知道我是否需要比现在这些节点更多的子节点。

在下面您可以看到我的treeview:

代码语言:javascript
复制
<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>

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-30 15:01:45

对于你的问题,假设所有的孩子都是同一类型的。只需在窗口的资源without any x:key中定义一个without any x:key,并将DataType,即您的子代object...Your的类型,整棵树将填充。

代码语言:javascript
复制
<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>

这里假设本地是定义您的子类的名称空间(xmlns)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19097338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档