【发布时间】:2017-10-31 14:33:26
【问题描述】:
我有一个交互窗口,加载时应该执行命令:
<i:Interaction.Triggers>
<i:EventTrigger EventName="Loaded">
<i:InvokeCommandAction Command="{Binding ActivateCommand}" />
</i:EventTrigger>
<i:EventTrigger EventName="Closed" >
<i:InvokeCommandAction Command="{Binding DeactivateCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>
它是这样使用的:
var loginVM = new Login();
var loginView = new Views.Login();
loginView.DataContext = loginVM;
loginView.ShowDialog();
当使用视图模型定位器通过 xaml 设置登录视图 DataContext(视图模型)时,EventTrigger 可以正常工作并在 VM 上执行命令。
但是,如果我像上面的示例那样从代码中设置DataContext(视图模型),则视图模型上的命令不会被执行!?
我还可以确认 Loaded 事件是在窗口显示之前触发的,所以在示例中设置了 DataContext 之后......所以设置了数据上下文,事件触发但由于某种原因命令没有被调用。
除了Loaded 之外的任何其他活动都完美无缺,所以我完全感到困惑......
【问题讨论】:
-
您是否考虑过将
loginVM传递给构造函数并在那里设置DataContext? -
是的,我已经看到了解决方法...但是刚刚找到了问题的答案...