using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Microsoft.UI.Xaml.Controls; using Microsoft.UI.Xaml; using System.Collections.ObjectModel; using System.ComponentModel; namespace RustTools.Editor; public class ExplorerItemTemplateSelector : DataTemplateSelector { public DataTemplate FolderTemplate { get; set; } public DataTemplate FileTemplate { get; set; } protected override DataTemplate SelectTemplateCore(object item) { var explorerItem = (ExplorerItem)item; return explorerItem.Type == ExplorerItem.ExplorerItemType.Folder ? FolderTemplate : FileTemplate; } } public class ExplorerItem : INotifyPropertyChanged { public enum ExplorerItemType { Folder, File }; public event PropertyChangedEventHandler PropertyChanged; public string Name { get; set; } public ExplorerItemType Type { get; set; } public string Dir { get;set; } private ObservableCollection m_children; public ObservableCollection Children { get { if (m_children == null) { m_children = new ObservableCollection(); } return m_children; } set { m_children = value; } } private bool m_isExpanded; public bool IsExpanded { get { return m_isExpanded; } set { if (m_isExpanded != value) { m_isExpanded = value; NotifyPropertyChanged("IsExpanded"); } } } private void NotifyPropertyChanged(string propertyName) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } public static implicit operator ExplorerItem(bool v) { throw new NotImplementedException(); } }