using System; using Avalonia.Controls; using CommunityToolkit.Mvvm.Messaging; using GazpromApp.Messages; using GazpromApp.ViewModels; namespace GazpromApp.Views; public partial class EditPointDialog : Window { public EditPointDialog() { InitializeComponent(); if (Design.IsDesignMode) return; // view image WeakReferenceMessenger.Default.Register(this, static (w, m) => { var dialog = new ImageView { DataContext = m.Image }; m.Reply(dialog.ShowDialog(w)); }); // error WeakReferenceMessenger.Default.Register(this, static (w, m) => { var dialog = new ErrorView { DataContext = m.Error }; m.Reply(dialog.ShowDialog(w)); }); // new equipment WeakReferenceMessenger.Default.Register(this, (w, m) => { WeakReferenceMessenger.Default.Unregister(this); var dialog = new NewEquipmentDialog { DataContext = new NewEquipmentDialogViewModel() }; m.Reply(dialog.ShowDialog(w)); }); // edit equipment WeakReferenceMessenger.Default.Register(this, (w, m) => { WeakReferenceMessenger.Default.Unregister(this); WeakReferenceMessenger.Default.Unregister(this); var dialog = new EditEquipmentDialog { DataContext = new EditEquipmentDialogViewModel(m.Equipment) }; m.Reply(dialog.ShowDialog(w)); }); // re registering error when new equipment done WeakReferenceMessenger.Default.Register(this, (_, _) => { WeakReferenceMessenger.Default.Register(this, static (w, m) => { var dialog = new ErrorView { DataContext = m.Error }; m.Reply(dialog.ShowDialog(w)); }); }); // re registering view image and error view WeakReferenceMessenger.Default.Register(this, (_, _) => { WeakReferenceMessenger.Default.Register(this, static (w, m) => { var dialog = new ImageView { DataContext = m.Image }; m.Reply(dialog.ShowDialog(w)); }); try { WeakReferenceMessenger.Default.Register(this, static (w, m) => { var dialog = new ErrorView { DataContext = m.Error }; m.Reply(dialog.ShowDialog(w)); }); } catch (Exception) { // ignored } }); // 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); WeakReferenceMessenger.Default.Unregister(this); // new prop // edit prop WeakReferenceMessenger.Default.Unregister(this); } }