使用List <string>

时间:2017-09-03 22:30:00

标签: c# wpf xaml treeview treeviewitem

我正在尝试将字符串列表绑定到TreeViewItem但由于某种原因没有显示数据,也没有任何错误。

在XAML中,我在TreeViewItem中有以下内容。

<TreeView Name="treeContainer">
            <TreeViewItem Header="Tables" Name="treeTablesContainer">
                <ItemsControl.ItemContainerStyle>
                    <Style TargetType="{x:Type TreeViewItem}" />
                </ItemsControl.ItemContainerStyle>
                <ItemsControl.ItemTemplate>
                    <HierarchicalDataTemplate
                        DataType="{x:Type system:String}">
                        <TextBlock Text="{Binding dbTables}" />
                    </HierarchicalDataTemplate>
                </ItemsControl.ItemTemplate>
            </TreeViewItem>
        </TreeView>

在cs代码中,我有以下内容:

dbTables = new List<string>();
            dbTables.Add("Tabl2");
            treeTablesContainer.ItemsSource = dbTables;

TreeViewItem可以展开和折叠,但是,没有孩子显示,我也看不到如何让它工作。

我在项目的另一部分做了类似的事情,除了不同的List是我自己的类的类型,我可以在行<TextBlock Text="{Binding dbTables}" />中引用但我认为这不是& #39;因为List<string>类型而工作,所以我没有访问权限,我的想法是否正确,如果是,我该如何解决这个问题。

2 个答案:

答案 0 :(得分:1)

<TreeView Name="treeContainer">
            <TreeViewItem Header="Tables" Name="treeTablesContainer">
                <ItemsControl.ItemContainerStyle>
                    <Style TargetType="{x:Type TreeViewItem}" />
                </ItemsControl.ItemContainerStyle>
                <ItemsControl.ItemTemplate>
                    <HierarchicalDataTemplate>
                        <TextBlock Text="{Binding }" />
                    </HierarchicalDataTemplate>
                </ItemsControl.ItemTemplate>
            </TreeViewItem>
        </TreeView>

只需删除绑定中的dbTables,因为它不绑定到集合中名为dbTables的任何属性

答案 1 :(得分:0)

分层数据模板是输出数据源中每个项目的数据模板。这意味着你的示例绑定文本块在字符串类上搜索dbTables。您的xaml代码应该看起来像

 <TreeView Name="treeContainer">
        <TreeViewItem Header="Tables" Name="treeTablesContainer">
            <ItemsControl.ItemContainerStyle>
                <Style TargetType="{x:Type TreeViewItem}" />
            </ItemsControl.ItemContainerStyle>
            <ItemsControl.ItemTemplate>
                <HierarchicalDataTemplate>
                    <TextBlock Text="{Binding}" />
                </HierarchicalDataTemplate>
            </ItemsControl.ItemTemplate>
        </TreeViewItem>
    </TreeView>