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>