我正在使用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}}。
答案 0 :(得分:1)
这里你真的有两个问题:
如何通知Shell它需要做什么。
如何从ViewModel
以下是我要做的事情:
使用PRISM的EventAggregator
,创建RunMyStoryboard
事件。在ShellViewModel
订阅此活动,并在MyViewModel.StartWizard
检查此问题,了解如何从ViewModel运行Storyboard:MVVM- Trigger Storyboard in the View Model in Silverlight