基于区域内的按钮单击,在Prism Shell中启动故事板

时间:2012-01-10 22:14:53

标签: wpf prism

我正在使用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 个答案:

答案 0 :(得分:1)

这里你真的有两个问题:

  1. 如何通知Shell它需要做什么。

  2. 如何从ViewModel

  3. 运行故事板

    以下是我要做的事情:

    1. 使用PRISM的EventAggregator,创建RunMyStoryboard事件。在ShellViewModel订阅此活动,并在MyViewModel.StartWizard

    2. 中发布此活动
    3. 检查此问题,了解如何从ViewModel运行Storyboard:MVVM- Trigger Storyboard in the View Model in Silverlight