0

HierarchicalDataTemplate に関する質問があります。コードを介して HierarchicalDataTemplate を追加し続けることは可能ですか、それを行う方法はありません。私の場合、後で私が今持っているものよりも多くの子ノードが必要になるかどうかわからないので、私はこれを求めています。

以下に私のツリービューを見ることができます:

<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>

前もって感謝します!

4

1 に答える 1

2

あなたの問題では、すべての子が同じタイプであると仮定します..HierarchicalDataTemplateウィンドウのリソースで1つを定義し、子オブジェクトのタイプをwithout any x:key配置するだけDataTypeです...ツリー全体が入力されます..

<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 が Child クラスが定義されている名前空間 (xmlns) であると仮定します

于 2013-09-30T15:01:45.820 に答える