public SkillBreakdownViewModel(PlayerInfo playerInfo)
{
ComboBoxEntities = CollectionHelper.Instance.CreateSyncedCollection(new []
{
new ComboBoxEntity(SkillViewType.FlatView, "Flat View"),
new ComboBoxEntity(SkillViewType.AggregatedSkillIdView, "Aggregate by Id"),
new ComboBoxEntity(SkillViewType.AggregatedSkillNameView, "Aggregate by Name")
});
//NOTE: These are duplicated in the xaml because of a wpf bug
SortDescriptionMappings = new Dictionary<SkillViewType, IList<SortDescription>>
{
{
SkillViewType.FlatView,
new List<SortDescription>
{
new SortDescription(nameof(SkillResult.Time), ListSortDirection.Ascending)
}
},
{
SkillViewType.AggregatedSkillIdView,
new List<SortDescription>
{
new SortDescription(nameof(AggregatedSkillResult.Amount), ListSortDirection.Descending)
}
},
{
SkillViewType.AggregatedSkillNameView,
new List<SortDescription>
{
new SortDescription(nameof(AggregatedSkillResult.Amount), ListSortDirection.Descending)
}
}
};
//set the intial view
var initialView = SkillViewType.AggregatedSkillNameView;
SortDescriptionSource = SortDescriptionMappings[initialView];
SelectedCollectionView = ComboBoxEntities.First(cbe => cbe.Key == initialView);
PlayerInfo = playerInfo;
SkillLog = PlayerInfo.SkillLog;
//subscribe to future changes and invoke manually
SkillLog.CollectionChanged += (sender, args) =>
{
UpdateAggregatedSkillLogs(args.NewItems.Cast<SkillResult>());
CasualMessenger.Instance.Messenger.Send(new ScrollPlayerStatsMessage(), this);
};
UpdateAggregatedSkillLogs(SkillLog);
}