Application.Windows集合是否像堆栈一样处理?

时间:2015-01-09 01:15:16

标签: wpf

我目前正在获取活动窗口,以便我可以在其上呈现自定义警报。

var activeWindow = Application.Current.Windows.OfType<Window>().FirstOrDefault(x => x.IsActive)

有时,activeWindow属性返回null,即使我有一个窗口w / focus。

我的问题是,Windows集合窗口是否存在或者不保证订单?

是否安全?

已修改 删除了不应该存在的lambda

var activeWindow = Application.Current.Windows.OfType<Window>().LastOrDefault()

是否会返回最后一个Window?

1 个答案:

答案 0 :(得分:1)

不,窗口的顺序由创建时间决定,并且在窗口变为活动/非活动状态时不会更改。

所以LastOrDefault()没有返回最后打开的Window,它返回最近调用构造函数的窗口。

你需要自己动手,在App.cs中,添加对最后打开的窗口的引用,并在窗口变为活动状态时更新引用。当您想显示警报时,如果该窗口未激活,请先激活该窗口。