using System; using Avalonia.Controls; using CommunityToolkit.Mvvm.Messaging; using GazpromApp.Messages; using GazpromApp.Models; using GazpromApp.ViewModels; namespace GazpromApp.Views; public partial class EditPointDialog : Window { public Point? Point; public EditPointDialog() { InitializeComponent(); if (Design.IsDesignMode) return; // view image WeakReferenceMessenger.Default.Register(this, static (w, m) => { ImageView dialog = new ImageView() { DataContext = m.Image }; m.Reply(dialog.ShowDialog(w)); }); // new equipment WeakReferenceMessenger.Default.Register(this, static (w, m) => { NewEquipmentDialog dialog = new NewEquipmentDialog() { DataContext = new NewEquipmentDialogViewModel() }; m.Reply(dialog.ShowDialog(w)); }); // edit equipment WeakReferenceMessenger.Default.Register(this, static (w, m) => { EditEquipmentDialog dialog = new EditEquipmentDialog() { DataContext = m.Equipment }; m.Reply(dialog.ShowDialog(w)); }); // new property // edit property // complete editing point WeakReferenceMessenger.Default.Register(this, static (w, m) => { w.Close(m.Point); }); } private void Window_OnClosing(object? sender, WindowClosingEventArgs e) { if (DataContext is EditPointDialogViewModel { IsClosed: false } vm) vm.CancelEditCommand.Execute(this); } private void Window_OnClosed(object? sender, EventArgs e) { WeakReferenceMessenger.Default.Unregister(this); WeakReferenceMessenger.Default.Unregister(this); WeakReferenceMessenger.Default.Unregister(this); // new prop // edit prop WeakReferenceMessenger.Default.Unregister(this); } }