Automate view initialization

This commit is contained in:
tyrrrz
2026-04-02 14:35:17 +03:00
parent 7ee2763d4b
commit f6166764e9
11 changed files with 62 additions and 66 deletions

View File

@@ -30,8 +30,23 @@ public partial class ViewManager
view.DataContext ??= viewModel;
if (view.IsInitialized)
{
_ = viewModel.InitializeAsync();
}
else
{
view.Initialized += async (_, _) => await viewModel.InitializeAsync();
}
return view;
}
public UserControl<T>? TryBindUserControl<T>(T viewModel)
where T : ViewModelBase => TryBindView(viewModel) as UserControl<T>;
public Window<T>? TryBindWindow<T>(T viewModel)
where T : ViewModelBase => TryBindView(viewModel) as Window<T>;
}
public partial class ViewManager : IDataTemplate

View File

@@ -1,4 +1,5 @@
using System;
using System.Threading.Tasks;
using CommunityToolkit.Mvvm.ComponentModel;
namespace DiscordChatExporter.Gui.Framework;
@@ -9,6 +10,8 @@ public abstract class ViewModelBase : ObservableObject, IDisposable
protected void OnAllPropertiesChanged() => OnPropertyChanged(string.Empty);
public virtual Task InitializeAsync() => Task.CompletedTask;
protected virtual void Dispose(bool disposing) { }
public void Dispose()