如何限制再次打开同一个窗口,并在使用WPF最小化类似Outlook的情况下最大化该窗口

如何限制再次打开同一个窗口,并在使用WPF最小化类似Outlook的情况下最大化该窗口,wpf,Wpf,我有一个WPF项目,它有列表框集合。当我单击列表框集合中的一个项目时,相应项目的详细信息将在单独的窗口中打开。我们可以有多个类似Outlook的窗口 如果我单击列表框中的一个项目,它将打开一个新窗口,如果我单击相同的项目,则意味着另一个窗口将打开相同的信息。在outlook中,如果已打开,则表示它将最大化已打开的窗口。要在应用程序中打开所有窗口,请使用以下方法: public Window getWindow(String Title) { Window windowObject = null;

我有一个WPF项目,它有列表框集合。当我单击列表框集合中的一个项目时,相应项目的详细信息将在单独的窗口中打开。我们可以有多个类似Outlook的窗口


如果我单击列表框中的一个项目,它将打开一个新窗口,如果我单击相同的项目,则意味着另一个窗口将打开相同的信息。在outlook中,如果已打开,则表示它将最大化已打开的窗口。

要在应用程序中打开所有窗口,请使用以下方法:

public Window getWindow(String Title)
{
Window windowObject = null;

foreach (Window window in System.Windows.Application.Current.Windows)
{
    if (window.Title == Title)
    {
        windowObject = window;
    }
}
return windowObject;
}

当然,您必须提供标题,我认为可以在ListBoxItem内容中找到

使用此选项将其最大化:

  windowObject.WindowState = WindowState.Maximized;
编辑1

它适合我,在GUI线程上,我得到了Windows集合。为了准确起见,我已将该系列中的项目固定在一起

正如您在我加载的事件中看到的:

        for (int i = 0; i < 2; i++)
        {
            Window wnd = new Window();
            wnd.Title = "Title " + i.ToString();
            wnd.Show();
        }
for(int i=0;i<2;i++)
{
窗口wnd=新窗口();
wnd.Title=“Title”+i.ToString();
wnd.Show();
}

我正在实例化两个新窗口,它们显示在剪报中。我不知道还有什么要说

也许您可以跟踪已打开的项目(可能在打开窗口之前将该项目添加到列表中),在打开新窗口之前,只需检查该项目是否已打开。RelatedItemsFullViewVM fullviewVM=new RelatedItemsFullViewVM();RelatedItemsFullView fullView=新的RelatedItemsFullView();fullview vm.Id=SelectedRelatedItem.Id;fullviewVM.Platform=SelectedRelatedItem.Platform;fullviewVM.Control=SelectedRelatedItem.Control;fullviewVM.Title=SelectedRelatedItem.Title;fullviewVM.Status=SelectedRelatedItem.Status;fullviewVM.RelatedItemsHeader=RelatedItemsHeader;fullView.DataContext=fullviewVM;fullView.Show();嗨,Olaru Mircea,每次windowobject只返回null。我已经通过了每个窗口的标题。