Можно ли как-то выполнить одну Команду из разных 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;
}
}
}
также есть представление для этой модели:
<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>
Можно ли избежать дублирования кода?
PS Я понимаю, что могу создать базуКласс для этих двух ViewModels и описать там эти Команды, но проблема в том, что некоторые из ViewModels уже имеют разные базовые классы.