5

我正在尝试创建一个应用程序,在该应用程序中,我需要在树视图中显示员工及其部门,如下所示:

  • 员工1
    • 部门
      • 部门1
      • 二部
  • 员工2
    • 部门
      • 部门3
      • 第四部

我怎么能用 WPF 做到这一点?

4

2 回答 2

2

正确的方法是使用HierarchicalDataTemplate. 我能想象的最基本的是以下内容:

<UserControl.Resources>
        <HierarchicalDataTemplate
            x:Key="RecursiveData" DataType="TreeViewItem" ItemsSource="{Binding Items}">
        </HierarchicalDataTemplate>
    </UserControl.Resources>

可以在 XAML 中使用如下:

<TreeView ItemTemplate="{StaticResource RecursiveData}" />

当然你可以随意自定义模板的样式和子组件。

请注意,ItemSource您的 TreeView 需要实际提供嵌套TreeViewItem的 s,其中每个 TreeViewItem 都包含它的子项Items

于 2016-07-06T20:44:12.323 回答
0

如果你有这样的结构:

public ObservableCollection<ChartOfAccount> ChartOfAccounts { get; set; }

public class ChartOfAccount
{
    public Book Book { get; set; }
    public List<LedgerHierarchy> ControlLedgers { get; set; }
}

public class LedgerHierarchy
{
    public ControlLedger ControlLedger { get; set; }
    public ObservableCollection<Ledger> Ledgers { get; set; }
}

你可以像这样直接绑定TreeView

<TreeView ItemsSource="{Binding ChartOfAccounts}"
          BorderThickness="0"
          ScrollViewer.HorizontalScrollBarVisibility="Disabled"
          ItemContainerStyle="{StaticResource treeStyle}">
    <TreeView.ItemTemplate>
        <HierarchicalDataTemplate ItemsSource="{Binding ControlLedgers}">
            <TextBlock Text="{Binding Book.Name}"/>
            <HierarchicalDataTemplate.ItemTemplate>
                <HierarchicalDataTemplate ItemsSource="{Binding Ledgers}">
                    <TextBlock Text="{Binding ControlLedger.Name}"/>
                    <HierarchicalDataTemplate.ItemTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding Name}"/>
                        </DataTemplate>
                    </HierarchicalDataTemplate.ItemTemplate>
                </HierarchicalDataTemplate>
            </HierarchicalDataTemplate.ItemTemplate>
        </HierarchicalDataTemplate>
    </TreeView.ItemTemplate>
</TreeView>

而不是HierarchicalDataTemplateControl.Resource.

于 2020-06-08T17:06:35.227 回答