Application.Windows 集合是否被视为堆栈?

Is Application.Windows collection treated like a stack?

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

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

有时 activeWindow 属性 return 为 null,即使我有一个 window w/ focus。

我的问题是,Windows 集合是堆叠 windows 还是不保证顺序?

安全吗

已编辑删除了不应该存在的 lambda

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

最后Window会return打开吗?

不是,windows的顺序是由创建时间决定的,不会随着windows变成active/inactive而改变。

因此 LastOrDefault() 不会 return 最后一个 Window 打开,它 return 是 window 最近调用构造函数的 window。

你需要自己做,在App.cs中,添加对最后打开的window的引用,并在window激活时更新引用。当你想显示警报时,如果 window 未激活,请先激活它。