MaterialModernGUI/MaterialModernWPF/Service/CalculationPackageContainer.cs
2019-01-26 13:40:16 +01: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 Package[] CalculationPackages { get; }
public CalculationPackageContainer(
IEventAggregator eventAggregator, IRegionManager regionManager,
IResolver resolver)
{
_regionManager = regionManager;
_resolver = resolver;
CalculationPackages = resolver.ResolveMany<Package>().ToArray();
eventAggregator.GetEvent<CalculationPackageSelectionChangedEvent>().Subscribe(SelectionChanged);
}
private void SelectionChanged((Package 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);
}
}
}
}