private IEnumerable<TreeViewItem> Subitems(string collectionId) { var v = cass.GetSubItems(collectionId) .Where(xe => xe != null) // такой вариант случался из-за ручного убирания записи о фотодокументе .OrderBy(xe => xe.Name == ONames.TagCollection ? 0 : 1) .Select(xe => { string id = xe.Attribute(ONames.rdfabout).Value; TVItem tvHeader = new TVItem(); var xname = xe.Element("name"); tvHeader.label.Text = xname==null?"noname" : xname.Value; XName type = xe.Name; tvHeader.icon.Source = type == ONames.TagCollection ? iconClosedFolderSmall : (type == ONames.TagDocument ? iconDocumentSmall : (type == ONames.TagPhotodoc ? iconPhotoSmall : (type == ONames.TagVideo ? iconVideoSmall : (type == ONames.TagAudio ? iconAudioSmall : iconUnknownSmall)))); TreeViewItem tvi = new TreeViewItem() { Header = tvHeader, Tag = xe }; foreach(var sc in Subitems(id)) tvi.Items.Add(sc); return tvi; }); return v; }
private void BuildTreeView() { treeView1.BeginInit(); treeView1.Items.Clear(); // Дерево кассеты TVItem tv1 = new TVItem {label = {Text = this.cass.Name}, icon = {Source = iconClosedFolderSmall}}; TreeViewItem cassItem = new TreeViewItem {Header = tv1, IsExpanded = true, Tag = this.cass.GetXItemById(this.cass.CollectionId)}; foreach(var sc in Subitems(this.cass.CollectionId)) cassItem.Items.Add(sc); // Дерево мусора TVItem tv2 = new TVItem {label = {Text = "Мусорная корзина"}, icon = {Source = iconClosedFolderSmall}}; TreeViewItem waste = new TreeViewItem() { Header = tv2, Tag = this.cass.GetXItemById(this.cass.Wastebasket) }; foreach(var sc in Subitems(this.cass.Wastebasket)) waste.Items.Add(sc); //// Дерево меню //TVItem tv3 = new TVItem(); tv3.label.Text = "Меню"; //TreeViewItem menuItem = new TreeViewItem() { Header = tv3, IsExpanded = false }; //foreach (var sc in Subitems("menurootcollection")) // menuItem.Items.Add(sc); treeView1.Items.Add(cassItem); treeView1.Items.Add(waste); //treeView1.Items.Add(menuItem); treeView1.EndInit(); }