学习总结:如何给事件绑定命令?
在MVVM架构下,要少用或者尽量不用事件,那有时候不得不用事件,那咋办呢?仍然可以通过绑定它的命令来实现,用例子来说明。
引用了xceed.wpf.toolkit这个工具可以实现导航(Wizard)的功能,做一个导航程序,依次有三个界面,我们想在第一个界面进入第二个界面时实现某种功能,熟悉导航功能的人肯定会说,那就用Enter事件啊!是,可以用Enter来实现,在窗体后台写代码,那为了符合MVVM的框架应该怎么做呢?具体做法如下:
添加引用:xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
下面显示的代码表示某一页导航
<xctk:WizardPage PageType="Interior" Title="设置设备参数"
Description="报警电话号码">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Enter">
<i:InvokeCommandAction Command="{Binding Path=StartUpCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
<Grid>
<ListBox Margin="16,8,16,40" ItemsSource="{Binding EquipCollection}"
ItemTemplate="{StaticResource setParaTemplate}"
HorizontalContentAlignment="Center"/>
</Grid>
</xctk:WizardPage>
在这段代码中实现事件Enter绑定Command的具体代码是:
<i:Interaction.Triggers>
<i:EventTrigger EventName="Enter">
<i:InvokeCommandAction Command="{Binding Path=StartUpCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
通过这种方式就可以实现事件的Command的命令了。