Запуск раскадровки в Prism Shell на основе нажатия кнопки внутри области - PullRequest
1 голос
/ 11 января 2012

Я использую Prism для создания приложения WPF, но у меня возникли некоторые проблемы при работе следующего. У меня есть Storyboard внутри моего Shell.xaml файла. Раскадровка должна запускаться кнопкой в ​​пользовательском элементе управления в регионе. Мой Shell.xaml выглядит так:

<Window ...>
  <Window.Resources>
    <ResourceDictionary>
      <Storyboard x:Key="myStoryboard">...</Storyboard>
    </ResourceDictionary>
  </Window.Resources>
  <ContentControl x:Name="wizard" prism:RegionManager.RegionName="MyRegion" />
</Window>

Кнопка прикреплена к команде в модели вида. Пользовательский элемент управления, который вводится в область MyRegion, выглядит следующим образом:

<UserControl ...>
  <Button x:Name="myButton" Command="{Binding WizardCommand}">
    MyButton
  </Button>
</UserControl>

И, наконец, модель представления, которая соответствует предыдущему пользовательскому элементу управления:

[Export(typeof(MyViewModel))]
public class MyViewModel
{
  private readonly DelegateCommand _wizardCommand;
  public ICommand WizardCommand { get { return _wizardCommand; } }

  public MyViewModel()
  {
    _wizardCommand = new DelegateCommand(StartWizard);
  }

  private void StartWizard()
  {
    ??????
  }
}

Какие шаги я должен предпринять, чтобы запустить раскадровку myStoryboard внутри Shell.xaml из WizardCommand внутри региона MyRegion.

1 Ответ

1 голос
/ 11 января 2012

У вас действительно есть 2 вопроса здесь:

  1. Как уведомить Shell, что она должна что-то сделать.

  2. Как запустить раскадровку из ViewModel

Вот что я бы сделал:

  1. Используйте PRISM EventAggregator, создайте RunMyStoryboard событие. Подпишитесь на это событие в вашем ShellViewModel и опубликуйте это событие в своем MyViewModel.StartWizard

  2. Проверьте этот вопрос о том, как запустить раскадровку из ViewModel: MVVM - раскадровка триггера в модели представления в Silverlight

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...