使用Wpf和MVVM。我有一个主窗口,我碰巧有一个Actipro Docksite(虽然我相信这个问题的整体背景可能是无关紧要的)。 docksite有一个我希望处理的WindowClosing事件,但在这种特殊情况下,我真的需要访问与事件一起使用的事件args。
现在,当我偶然发现WPF和MVVM的陡峭学习曲线时,我发现我可以使用交互来处理这样的事件;
<i:Interaction.Triggers>
<i:EventTrigger EventName="Loaded">
<i:InvokeCommandAction Command="{Binding Path=RegisterDocksiteCommand}" CommandParameter="{Binding ElementName=FtpDocksite}"/>
</i:EventTrigger>
<!-- <i:EventTrigger EventName="WindowClosing">
<i:InvokeCommandAction Command="{Binding Path=DockingWindowClosingCommand}" />
</i:EventTrigger> -->
</i:Interaction.Triggers>
这个问题虽然我可以通过交互捕获windowClosing事件但是我看不到如何将事件args作为commandParameter传递。我知道我会在后面的代码中处理这个问题然后我会陷入各种各样的悲痛,试图通过evet agrs(或者至少我想要bavk到视图模型的特定事件arg。
所以我做了一些研究,偶然发现了EventManager,并决定尝试使用它。
在我的主窗口的viewmodel的构造函数中,我添加了以下内容;
EventManager.RegisterClassHandler(GetType(Docksite),DockSite.WindowClosingEvent,New RoutedEventHandler(AddressOf OnDockSiteWindowClosing))
并进一步向下
Private Sub OnDockSiteWindowClosing(ByVal sender As Object, ByVal e As DockingWindowEventArgs)
Select Case e.Window.Name
Case "SchedulerViewWindow"
SchedulerContextualTabIsVisible = False
scheduler = Nothing
Case Else
Exit Select
End Select
End Sub
令我高兴的是,只有当我为视图模型文件关闭Option Strict Off时才会工作。有没有办法可以使用EventManager而不必关闭选项Strict off?
编辑:
我得到的错误信息是; Option Strict On不允许缩小方法'Private Sub OnDockSiteWindowClosing(sender As Object,e As ActiproSoftware.Windows.Controls.Docking.DockingWindowEventArgs)'和委托'Delegate Sub RoutedEventHandler(sender As Object,e As System)之间的隐式类型转换。 Windows.RoutedEventArgs)'
由于