0

我正在使用http://wpfmdi.codeplex.com/库来处理我的 WPF 应用程序中的 MDI。

我有一个包含子容器的 Canvas,该子容器又包含许多小窗口。我想在其中一个小窗口关闭时执行一项操作,因此我尝试执行以下操作:

MdiChild child = new MdiChild();
child.Closing += new RoutedEventHandler(DatabaseTableWindow_Closing); 

private void DatabaseTableWindow_Closing(object sender, RoutedEventArgs e)
        {
            object s = e.Source;
        }

而当窗口关闭时方法成功进入,e.Source为null。我也检查了senderand 那也是空的。我想要的只是一种找出哪个窗口触发了事件的方法。

4

2 回答 2

2

如果sendernull,那么这听起来像是您正在使用的 MDI 框架中的疏忽/错误。既然你有源,你可以修复它:找到Closing引发事件的地方,并添加this为发件人。这应该为您提供MdiChild处理事件时的参考。

于 2012-10-19T14:37:37.300 回答
2

您可能可以使用 LINQ 来规避该问题:

child.Closing += (o,e) => { DatabaseTableWindow_Closing(this, e); };

编辑:实际上在这种情况下你不应该使用“this”,而是“child”(它会指向你的 MdiChild):

MdiChild child = new MdiChild();
child.Closing += (o,e) => { DatabaseTableWindow_Closing(child, e); };
于 2012-10-19T14:45:06.520 回答