public ProjectNodeViewModel(ResourceNode node) { Node = node; Name = node.Name; foreach (var child in Node.ChildNodes) { ResourceNodeViewModel model; if (child.Item is ResourceFolder) { model = new FolderNodeViewModel(child, this); } else if (child.Item is Palette) { model = new PaletteNodeViewModel(child, this); } else if (child.Item is DataSource) { model = new DataFileNodeViewModel(child, this); } else if (child.Item is Arranger) { model = new ArrangerNodeViewModel(child, this); } else { continue; } Children.Add(model); } }
public override DataTemplate SelectTemplate(object item, DependencyObject container) { if (item == null || container is null) { return(null); } return(item switch { ProjectNodeViewModel _ => ProjectNodeTemplate, FolderNodeViewModel _ => FolderNodeTemplate, DataFileNodeViewModel _ => DataFileNodeTemplate, ArrangerNodeViewModel _ => ArrangerNodeTemplate, PaletteNodeViewModel _ => PaletteNodeTemplate, _ => throw new ArgumentException($"{nameof(SelectTemplate)} does not contain a template for type {item.GetType()}") });