在我的窗口中,我想使用以下代码
<i:Interaction.Triggers>
<i:EventTrigger EventName="SourceInitialized">
<command:EventToCommand Command="{x:Static wpf:Window.InitializeWindowProcessHookCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>将SourceInitialized事件挂接到我所谓的Window类上的命令。我使用的是MvvMLight EventToCommand,如果我使用Loaded事件而不是SourceInitialized,那么它可以很好地工作,所以我们可以假设命令和进一步的逻辑是工作的。此外,使用带有代码的事件可以工作,但我正在寻找一个使用EventTriggers的解决方案(如果可能的话)。
在查找可能的解决方案时,我偶然发现了MSDN上的一个主题,该主题就是关于这个确切的主题的,OP点指出他成功地绑定到Loaded事件,但无法绑定到SourceInitialized来工作。
我想为windows源代码初始化事件编写一个类似的程序,但是发现
Window.SourceInitializedEvent没有公开。
有什么可能的解决办法吗?
非常感谢
发布于 2017-07-14 10:24:05
SourceInitialized事件在触发器有机会调用命令之前触发,因此这将无法工作。
此外,使用XAML标记中定义的EventTrigger来激发命令也没有多大意义,这仅仅是为了不需要从同一视图的代码后面执行。MVVM并不是要从视图中删除与视图相关的代码,它也不会打破模式,从定义XAML标记的同一个视图的代码后面调用命令。
因此,从代码隐藏的事件处理程序中调用该命令,或者订阅另一个事件。
正如您已经注意到的,无法使用在同一窗口的XAML标记中定义的SourceInitialized来处理窗口的EventTrigger事件。
https://stackoverflow.com/questions/45090960
复制相似问题