1
0
mirror of https://github.com/Artemis-RGB/Artemis synced 2025-12-13 05:48:35 +00:00
Artemis/src/Artemis.UI/Screens/Sidebar/SidebarScreenViewModel.cs
2023-01-30 21:00:10 +01:00

35 lines
964 B
C#

using System;
using Artemis.UI.Shared;
using DryIoc;
using Material.Icons;
using ReactiveUI;
namespace Artemis.UI.Screens.Sidebar;
public class SidebarScreenViewModel<T> : SidebarScreenViewModel where T : MainScreenViewModel
{
public SidebarScreenViewModel(MaterialIconKind icon, string displayName) : base(icon, displayName)
{
}
public override Type ScreenType => typeof(T);
public override MainScreenViewModel CreateInstance(IContainer container, IScreen screen)
{
return container.Resolve<T>(new object[] { screen });
}
}
public abstract class SidebarScreenViewModel : ViewModelBase
{
protected SidebarScreenViewModel(MaterialIconKind icon, string displayName)
{
Icon = icon;
DisplayName = displayName;
}
public MaterialIconKind Icon { get; }
public abstract Type ScreenType { get; }
public abstract MainScreenViewModel CreateInstance(IContainer container, IScreen screen);
}