using System.Collections.ObjectModel; using System.ComponentModel; using System.Runtime.CompilerServices; namespace EmbyToolbox.ViewModels; public sealed class JsonTreeNodeViewModel : INotifyPropertyChanged { private bool _isExpanded; public JsonTreeNodeViewModel(string name, string value, string subtreeJson, JsonTreeNodeViewModel? parent = null) { Name = name; Value = value; SubtreeJson = subtreeJson; Parent = parent; } public string Name { get; } public string Value { get; } public string SubtreeJson { get; } public JsonTreeNodeViewModel? Parent { get; } public ObservableCollection Children { get; } = new(); public bool IsExpanded { get => _isExpanded; set { if (_isExpanded == value) { return; } _isExpanded = value; OnPropertyChanged(); } } public event PropertyChangedEventHandler? PropertyChanged; private void OnPropertyChanged([CallerMemberName] string? propertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } }