交互EventTrigger忽略窗口Loaded事件但不忽略其他事件

时间:2017-10-31 14:33:27

标签: c# wpf

我有一个交互的窗口,应该在加载时执行命令:

<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以外的任何其他活动都能完美无缺,所以我完全感到困惑......

1 个答案:

答案 0 :(得分:1)

好的,所以我可以确认这是一个BUG,当你设置SizeToContent时会发生:

XAML中SizeToContent的存在会破坏窗口的Loaded事件 https://github.com/Microsoft/dotnet/issues/429

EventToCommand for Loaded event not working as expected if Window.SizeToContent = WidthAndHeight