C# WPF如何关闭通过父窗口打开的所有子窗口

foreach (Window item in Application.Current.Windows)
if (item.Title == "") continue; // 跳过无标题窗口
if (item.Title != "父窗口标题") item.Close();
}
WinForm时这样操作的:
// 遍历并关闭所有子窗口
FormCollection childCollection = Application.OpenForms;
for (int i = childCollection.Count; i-- > 0;)
if (childCollection[i].Name != "父窗口标题") childCollection[i].Close();
// 或者也可以这样写:
FormCollection childCollection = Application.OpenForms;
for (int i = childCollection.Count; i-- > 0;)
if (childCollection[i].Name != this.Title) childCollection[i].Close();
WPF中时这样操作的:
// 遍历并关闭所有子窗口
Window[] childArray = Application.Current.Windows.Cast<Window>().ToArray();
for (int i = childArray.Length; i-- > 0;)
Window item = childArray[i];
if (item.Title == "") continue; // 忽略无标题窗口
if (item.Title != "父窗口标题") item.Close();
// 或者也可以这样写:
Window[] childArray = Application.Current.Windows.Cast<Window>().ToArray();
for (int i = childArray.Length; i-- > 0;)