Пример #1
0
    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);
        }
    }
Пример #2
0
    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()}")
        });