5

以下のように、ツリービューのような構造で従業員とその部門を表示する必要があるアプリケーションを作成しようとしています。

  • 従業員1
    • デパートメント
      • 部門1
      • 部門2
  • 従業員2
    • デパートメント
      • 部門3
      • 部門4

どうすればこれを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}" />

もちろん、スタイルとサブコンポーネントを使用してテンプレートを自由にカスタマイズできます。

TreeViewの は、各 TreeViewItem にサブアイテムが含まれるItemSourceネストされた を実際に提供する必要があることに注意してください。TreeViewItemItems

于 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 に答える