0

このようにツリービューでデータを表示したい:(*1)

 - There are 2 tickets 
   -- Opening problem category with ID 5685
   -- Closing problem category with ID 5687
 - There are 3 projects
   -- WPF project with ID 1234
   -- C# project with ID 12345
   -- ASP.NET project with ID 12

TicketsProjectsクラスから継承されたEntityBaseクラス

public class EntityBase
    {
        public int EntityID { get; set; }
        public static EntityCollection entityCollection { get; set; }
        public EntityBase() 
        {
            entityCollection = new EntityCollection();
        }
    }

EntityCollection にはプライベートList<EntityBase>データがあります。

プロジェクトまたはチケットの親ノードを作成するために、TreeViewParentNodeクラスを作成しました

    public class TreeViewParentNode
        {
            public string ParentName { get; set; }
            public List<EntityBase> ParentItems;
            public int ParentCount;
            public TreeViewParentNode(string ParentName) 
            {
                ParentCount = 0;
                this.ParentName = ParentName;
                ParentItems = new List<EntityBase>();
            }
 }

Treeview ObservableCollection<TreeViewParentNode> The Window のコンストラクターでデータを表示するコレクションを作成しました。

 public ReminderExtendedWindow()
        {
            InitializeComponent();
            this.ResizeMode = ResizeMode.NoResize;
            List<TreeViewParentNode> Nodes = new List<TreeViewParentNode>();
            foreach (EntityBase EntityItem in EntityBase.entityCollection)
            {
               TreeViewParentNode findnode = Nodes.Find(
                   delegate(TreeViewParentNode node) 
                   { 
                       return node.ParentName == EntityItem.GetType().Name; 
                   }
                   );
               if (findnode == null)
               {
                   TreeViewParentNode NewParentNode = new TreeViewParentNode(EntityItem.GetType().Name);
                   NewParentNode.ParentItems.Add(EntityItem);
                   NewParentNode.ParentCount++;
                   Nodes.Add(NewParentNode);
               }
               else
               {
                   findnode.ParentItems.Add(EntityItem);
                   findnode.ParentCount++;
               }
            }
            Coll = new ObservableCollection<TreeViewParentNode>(Nodes);
            DataContext = this;

        }   

ツリービューXAMLコード

<TreeView Height="500" Width="375" Background="Transparent" VerticalAlignment="Top" HorizontalAlignment="Left" Margin="10,50,0,0" 
               BorderThickness="0,0,0,0" x:Name="EntityTree" ItemsSource="{Binding Coll}">

上記(*1)のようなデータを表示するにはどうすればよいですか?

4

0 に答える 0