Можно ли как-то выполнить одну команду из другой ViewModels в приложении WPF с помощью Prism?
Позвольте мне объяснить, что я имею в виду.
У меня есть класс MainMenuViewModel:
public class MainMenuViewModel
{
private ICommand _aboutCommand;
public ICommand AboutCommand
{
get
{
if (_aboutCommand == null)
{
_aboutCommand = new DelegateCommand(() =>
{ MessageBox.Show("About menu item clicked!"); });
}
return _aboutCommand;
}
}
}
также есть View для этой модели:
<Menu IsMainMenu="True">
<MenuItem Header="Nápověda">
<MenuItem Header="O Aplikaci" x:Name="About"
Command="{Binding AboutCommand}" />
</MenuItem>
</Menu>
В приложении есть еще один модуль, который должен выполнить команду с таким же поведением (или даже, наверное, лучше - ту же команду):
public class MunisatorViewModel
{
private ICommand _aboutCommandInAnotherModule;
public ICommand AboutCommandInAnotherModule
{
get
{
if (_aboutCommandInAnotherModule== null)
{
_aboutCommandInAnotherModule= new DelegateCommand(() =>
{ MessageBox.Show("About menu item clicked!"); });
}
return _aboutCommandInAnotherModule;
}
}
}
этот модуль имеет представление:
<StackPanel Background="White" HorizontalAlignment="Center" VerticalAlignment="Top">
<Button cmd:Click.Command="{Binding AboutCommandInAnotherModule}">About</Button>
</StackPanel>
Можно ли избежать дублирования кода?
P.S. Я понимаю, что я могу создать базовый класс для этих двух ViewModels и описать там эти команды, но проблема в том, что некоторые ViewModels уже имеют разные базовые классы.