using System.Collections.ObjectModel; using System.Linq; using CommunityToolkit.Mvvm.ComponentModel; using GazpromApp.Models; namespace GazpromApp.ViewModels; public partial class PropertyViewModel : ViewModelBase { [ObservableProperty] private string _name; [ObservableProperty] private string _value; public ObservableCollection Properties { get; set; } // Visual and other properties public PropertyViewModel? Parent { get; set; } [ObservableProperty] private bool _isEditing; public Property GetProperty(Property? parent = null) { var p = new Property { Name = Name, Value = Value, Properties = [], Parent = parent }; p.Properties = Properties.Select(e => e.GetProperty(p)).ToList(); return p; } public PropertyViewModel() { Name = "Имя свойства"; Value = "Значение свойства"; Properties = []; Parent = null; } public PropertyViewModel(Property property, PropertyViewModel? parent = null) { Name = property.Name; Value = property.Value; Properties = new ObservableCollection( property.Properties.Select(e => new PropertyViewModel(e, this))); Parent = property.Parent is null ? null : parent; } public PropertyViewModel(PropertyViewModel property) { Name = "Имя свойства"; Value = "Значение свойства"; Properties = []; Parent = property; } }