- shit: Cleanup this mess
This commit is contained in:
42
Nebula.Launcher/Services/ViewHelperService.cs
Normal file
42
Nebula.Launcher/Services/ViewHelperService.cs
Normal file
@@ -0,0 +1,42 @@
|
||||
using System;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using Avalonia.Controls;
|
||||
using Nebula.Launcher.ViewModels;
|
||||
using Nebula.Shared;
|
||||
|
||||
namespace Nebula.Launcher.Services;
|
||||
|
||||
[ServiceRegister, ConstructGenerator]
|
||||
public sealed partial class ViewHelperService
|
||||
{
|
||||
[GenerateProperty] private IServiceProvider ServiceProvider { get; } = default!;
|
||||
|
||||
public bool TryGetViewModel(Type type, [NotNullWhen(true)] out ViewModelBase? viewModelBase)
|
||||
{
|
||||
viewModelBase = null;
|
||||
var vm = Design.IsDesignMode
|
||||
? Activator.CreateInstance(type)
|
||||
: ServiceProvider.GetService(type);
|
||||
|
||||
if (vm is not ViewModelBase vmb) return false;
|
||||
|
||||
viewModelBase = vmb;
|
||||
return true;
|
||||
}
|
||||
|
||||
public bool TryGetViewModel<T>([NotNullWhen(true)] out T? viewModelBase) where T : ViewModelBase
|
||||
{
|
||||
var success = TryGetViewModel(typeof(T), out var vmb);
|
||||
viewModelBase = (T?)vmb;
|
||||
return success;
|
||||
}
|
||||
|
||||
public T GetViewModel<T>() where T : ViewModelBase
|
||||
{
|
||||
TryGetViewModel<T>(out var viewModelBase);
|
||||
return viewModelBase!;
|
||||
}
|
||||
|
||||
private void Initialise(){}
|
||||
private void InitialiseInDesignMode(){}
|
||||
}
|
||||
Reference in New Issue
Block a user