我有一个带有交互的窗口,在加载时应该执行命令:
<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之外,任何其他事件都能完美地工作,所以我完全迷惑了……
发布于 2017-10-31 23:07:56
好的,我可以确认这是一个BUG,当您设置SizeToContent时就会发生
window https://github.com/Microsoft/dotnet/issues/429的XAML中断加载事件中SizeToContent的存在
EventToCommand for Loaded event not working as expected if Window.SizeToContent = WidthAndHeight
https://stackoverflow.com/questions/47037908
复制相似问题