Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# wpf TreeView HierarchycalDataTemplate相关_C#_Wpf_Vb.net_Treeview - Fatal编程技术网

C# wpf TreeView 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

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

下面你可以看到我的树视图:

<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会有相同类型的儿童。然后你可以参考我更新的答案