5

wpfから始めたばかりです。オブジェクト (階層) フォルダーをバインドする必要があります

public class Folder
{
    public Folder()
    {
        this.Name = string.Empty;
        this.Modules = new ObservableCollection<Module>();
        this.Folders = new List<Folder>();
        this.HasChild = false;
    }

    public Folder(Folder parent)
    {
        this.Name = string.Empty;
        this.Modules = new ObservableCollection<Module>();
        this.Folders = new List<Folder>();
        this.HasChild = false;
        this.Parent = parent;
    }

    public bool HasChild { get; set; }

    public string Name { get; set; }

    public List<Folder> Folders { get; set; }

    public ObservableCollection<Module> Modules { get; set; }

    public Folder Parent { get; set; }

    public Folder IfItemExists(string name)
    {
        foreach (Folder folder in Folders)
        {
            if (folder.Name == name)
            {
                return folder;
            }
        }

        return null;
    }
}

ツリービューに。私はそのようにやっています

   <TreeView Name="treeView" Margin="5">
        <TreeView.ItemTemplate>
            <HierarchicalDataTemplate ItemsSource="{Binding Path=Folders}" DataType="{x:Type ModulesUpToDateChecker:Folder}">
                <HierarchicalDataTemplate.ItemTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding Path=Name}"></TextBlock>
                    </DataTemplate>
                </HierarchicalDataTemplate.ItemTemplate>
            </HierarchicalDataTemplate>
        </TreeView.ItemTemplate>
    </TreeView>

空のdocpanelがあります。オブジェクトは書き込みで埋められます。エチェの子には、同じタイプの自分の子がいます。

4

2 に答える 2

5

HierarchicalDataTemplateはすでにDataTemplateです(それから派生しています)。したがって、次のように、HierarchicalDataTemplate内のItemTemplateとDataTemplateのものをスキップするだけです。

<TreeView Name="treeView" Margin="5">
  <TreeView.Resources>
    <HierarchicalDataTemplate ItemsSource="{Binding Path=Folders}" DataType="{x:Type WpfApplication220:Folder}">
      <TextBlock Text="{Binding Path=Name}"></TextBlock>
    </HierarchicalDataTemplate>
  </TreeView.Resources>
</TreeView>

ああ、プログラムで、またはマークアップで、ツリービューのItemsSourceを設定する必要があります。

treeView.ItemsSource = ..yourFolderList..
于 2012-09-21T14:43:16.803 に答える
3

これを試してください:

 <TreeView Name="treeView" Margin="5">
    <TreeView.ItemTemplate>
        <HierarchicalDataTemplate ItemsSource="{Binding Path=Folders}" DataType="x:Type ModulesUpToDateChecker:Folder}">
           <Grid>
             <TextBlock Text="{Binding Path=Name}"></TextBlock>
           </Grid>
        </HierarchicalDataTemplate>
    </TreeView.ItemTemplate>
</TreeView>
于 2012-09-21T14:45:44.697 に答える