Files @ 665daa360de1
Branch filter:

Location: ATITD-Tools/Desert-Paint-Codex/Views/UserControlBase.cs

Malkyne
Added tag R_T10_1.3 for changeset 6919080271d5
using System.Reactive.Disposables;
using System.Threading.Tasks;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.ReactiveUI;
using DesertPaintCodex.ViewModels;
using ReactiveUI;

namespace DesertPaintCodex.Views
{
    public class UserControlBase<T> : ReactiveUserControl<T> where T : ViewModelBase
    {
        public UserControlBase()
        {
            this.WhenActivated((disposables) =>
            {
                ViewModel?.ShowMessageBoxDialog.RegisterHandler(ShowDialog<MessageBoxView,MessageBoxViewModel,int>).DisposeWith(disposables);
            });
        }

        #region Dialog handlers

        protected async Task ShowDialog<View, ViewModel, ReturnType>(
            InteractionContext<ViewModel, ReturnType> interaction) where View : Window, new()
        {
            if (Application.Current.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
            {
                View       dialog = new() {DataContext = interaction.Input};
                ReturnType result = await dialog.ShowDialog<ReturnType>(desktop.MainWindow);
                interaction.SetOutput(result);
            }
        }
        
        #endregion
        
        
    }
}