WPF MVVM向导

问题描述:

我实现WPF MVVM向导,我想知道一个新的向导的页面(用户控件)被加载时执行DoOperation的正确方法。WPF MVVM向导

MyWizard.ViewModal类上实现,而UserControl负载在MyWizard.View名称空间上发生。

如何连接UserControl加载事件到DoOperation api?

我试过如下:

<xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" 

<i:Interaction.Triggers> 

    <i:EventTrigger EventName="Loaded"> 
     <i:InvokeCommandAction Command="{Binding Path=RunOperation}"/ 
    </i:EventTrigger> 
</i:Interaction.Triggers> 

RunOperation电话DoOperation

它不起作用,RunOperation没有被调用。

这是正确的做法或有在MyWizard.ViewModal类来执行操作的更好的办法?

您的方法应该可行。你有没有检查你的输出控制台的绑定错误?是RunOperation一个命令?当提升Loaded事件时,是否已设置UserControl的DataContext?您是否在UC中实施了这种触发器?

<UserControl x:Class="..." 
       xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
       xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"     
      xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"> 

    <i:Interaction.Triggers> 

     <i:EventTrigger EventName="Loaded"> 
      <i:InvokeCommandAction Command="{Binding Path=RunOperation}"/> 
     </i:EventTrigger> 

    </i:Interaction.Triggers> 

    <Grid> 
     ... 
    </Grid> 

</UserControl>