using System; using System.Windows; using Wpf.Ui; namespace BetterGenshinImpact.Service; /// /// Service that provides pages for navigation. /// public class PageService : IPageService { /// /// Service which provides the instances of pages. /// private readonly IServiceProvider _serviceProvider; /// /// Creates new instance and attaches the . /// public PageService(IServiceProvider serviceProvider) { _serviceProvider = serviceProvider; } /// public T? GetPage() where T : class { if (!typeof(FrameworkElement).IsAssignableFrom(typeof(T))) { throw new InvalidOperationException("The page should be a WPF control."); } return (T?)_serviceProvider.GetService(typeof(T)); } /// public FrameworkElement? GetPage(Type pageType) { if (!typeof(FrameworkElement).IsAssignableFrom(pageType)) { throw new InvalidOperationException("The page should be a WPF control."); } return _serviceProvider.GetService(pageType) as FrameworkElement; } }