具有多个级别但相同对象类型的TreeView

时间:2017-09-19 11:49:28

标签: c# wpf treeview hierarchicaldatatemplate

我尝试使用倍数级别创建TreeView但只有一种类型(IPermission

这样的事情:

--[X] Permission1
----[X] Permission1_1
------[] Permission1_1_1
----[] Permission1_2
----[] Permission1_3
--[X]Permission2

并且可以选择CheckBox作为每个级别。

这是我的目标:

public interface IPermission
{
    int ParentID { get; set; }
    int ID { get; set; }
    string Title { get; set; }
    bool Value { get; set; }
    List<IPermission> Children { get; set; }
}

我与HierarchicalDataTemplate / DataTemplate / CompositeCollection合作,但未找到解决方案。

以下是我所做的一个例子:

            <TreeView>
                <TreeViewItem Header="Nom" ItemsSource="{Binding Permissions}">
                    <TreeViewItem.ItemTemplate>
                        <HierarchicalDataTemplate ItemsSource="{Binding}">
                            <StackPanel Orientation="Horizontal">
                                <CheckBox Margin="2" Tag="{Binding Path=Value}" />
                                <TextBlock Text="{Binding Path=Title}" FontWeight="SemiBold" />
                            </StackPanel>
                        </HierarchicalDataTemplate>
                        <!-- How to display the Children ? -->
                    </TreeViewItem.ItemTemplate>
                </TreeViewItem>
            </TreeView>

1 个答案:

答案 0 :(得分:1)

您的XAML标记不正确。

您需要在ItemTemplate中定义TreeView,而不是TreeViewitem

其次,您需要设置ItemsSource的{​​{1}}才能显示对象层次结构。

此外,为什么要绑定HierarchicalDataTemplate的{​​{1}}属性而不是使用Tag属性?

CheckBox