using System.Reactive.Linq; using AvaloniaEdit.Document; using Dock.Model.Mvvm.Controls; using DynamicData.Binding; using InkForge.Desktop.Models; namespace InkForge.Desktop.ViewModels.Documents; public class NoteEditDocumentViewModel : Document { public Note Note { get; } public TextDocument Document { get; } public NoteEditDocumentViewModel(Note note, TextDocument textDocument) { Note = note; Document = textDocument; Observable.CombineLatest( this.WhenValueChanged(v => v.Note.Name), this.WhenValueChanged(v => v.Document.UndoStack.IsOriginalFile), (name, original) => original ? name : $"{name} *" ).Subscribe(title => Title = title!); } }