MaterialModernGUI/MaterialModernWPF/Service/CalculationPackageContainer.cs
Holger Boerchers 7227d3215a Geschafft!
2018-08-14 23:29:51 +02:00

40 lines
1.3 KiB
C#

using System.Linq;
using DryIoc;
using Prism.Events;
using Prism.Regions;
namespace MaterialModernWPF.Service
{
public class CalculationPackageContainer
{
private readonly IRegionManager _regionManager;
private readonly IResolver _resolver;
public CalculationPackage[] CalculationPackages { get; }
public CalculationPackageContainer(
IEventAggregator eventAggregator, IRegionManager regionManager,
IResolver resolver)
{
_regionManager = regionManager;
_resolver = resolver;
CalculationPackages = resolver.ResolveMany<CalculationPackage>().ToArray();
eventAggregator.GetEvent<CalculationPackageSelectionChangedEvent>().Subscribe(SelectionChanged);
}
private void SelectionChanged((CalculationPackage sender, bool isSelected) payload)
{
var viewKey = payload.sender.GetType().FullName;
var region = _regionManager.Regions[Constants.PackagesRegion];
if (payload.isSelected)
{
var view = _resolver.Resolve(payload.sender.CalculationViewType);
region.Add(view, viewKey);
}
else
{
var view = region.GetView(viewKey);
region.Remove(view);
}
}
}
}