Example #1
0
        private void ProcessMultiGlobalCommandInvalidators(IMultiGlobalCommand multiGlobalCommand)
        {
            multiGlobalCommand.OnCommandsComputed += (oldCommands, newCommands) =>
            {
                var associatedInvalidationSubscriptions = MultiCommandsSubscriptions.Where(o => oldCommands.Contains(o.Object)).ToList();
                foreach (var subscription in associatedInvalidationSubscriptions)
                {
                    subscription.Break();
                }

                foreach (var command in newCommands)
                {
                    foreach (var metadata in command.Metadata.OfType <IAutoInvalidateMetadata>())
                    {
                        var token = metadata.AttachMetadataDefinition(EventAggregator, () => command.RaiseCanExecuteChanged());
                        MultiCommandsSubscriptions.Add(new Subscription()
                        {
                            Event  = EventAggregator.GetEvent(metadata.EventType),
                            Object = command,
                            Token  = token
                        });
                    }
                }
            };

            foreach (var metadata in multiGlobalCommand.Metadata.OfType <IAutoInvalidateMetadata>())
            {
                metadata.AttachMetadataDefinition(EventAggregator, () => multiGlobalCommand.ComputeCommands());
            }
        }
 public TMetadata GetMultiMenuMetadata <TMetadata>(IMultiGlobalCommand multiGlobalCommand) where TMetadata : IMultiMainMenuMetadata
 {
     return(multiGlobalCommand.Metadata.OfType <MultiMainMenuOption>().Single().OfType <TMetadata>().SingleOrDefault());
 }