Да. Вы можете использовать CompositeCommand, который включает обе (или любое число) других ваших команд. Я считаю, что это в Prism, но если у вас нет доступа к этому в вашем проекте, не очень сложно реализовать аналогичную функциональность самостоятельно, особенно если вы не используете параметры - все, что вам нужно сделать, это реализовать ICommand с классом, а затем иметь собственный список ICommands внутри класса.
Подробнее о классе CompositeCommand от Prism:
http://msdn.microsoft.com/en-us/library/microsoft.practices.composite.presentation.commands.compositecommand_members.aspx
Далее следует моя, по общему признанию, короткая и, возможно, неканоническая реализация. Чтобы использовать его, все, что вам нужно сделать, это сделать ссылку на вашу виртуальную машину, а затем привязаться к ней. Вы можете вызвать .AddCommand для всех других команд, которые вы хотите запустить. Возможно, Prism One реализован по-другому, но я верю, что это сработает:
public class CompositeCommand : ICommand {
private List<ICommand> subCommands;
public CompositeCommand()
{
subCommands = new List<ICommand>();
}
public bool CanExecute(object parameter)
{
foreach (ICommand command in subCommands)
{
if (!command.CanExecute(parameter))
{
return false;
}
}
return true;
}
public event EventHandler CanExecuteChanged;
public void Execute(object parameter)
{
foreach (ICommand command in subCommands)
{
command.Execute(parameter);
}
}
public void AddCommand(ICommand command)
{
if (command == null)
throw new ArgumentNullException("Yadayada, command is null. Don't pass null commands.");
subCommands.Add(command);
}
}