C# 确定窗口实例是否已打开

C# 确定窗口实例是否已打开,c#,wpf,windows,C#,Wpf,Windows,我正在构建一个WPF聊天应用程序。 当用户单击聊天列表中的用户名时,我正在打开一个新的聊天窗口。 如果用户单击聊天列表中的另一个用户名,则会打开聊天窗口的一个新实例。这里的问题是如何检查该用户聊天窗口是否已打开以附加传入的聊天。 是否有与每个窗口关联的唯一id?如果是,则如何检查该特定窗口是否已打开 当用户单击用户名时创建聊天窗口新实例的代码: private void UsersChatWith_MouseLeftButtonUp(object sender, MouseButtonEvent

我正在构建一个WPF聊天应用程序。 当用户单击聊天列表中的用户名时,我正在打开一个新的聊天窗口。 如果用户单击聊天列表中的另一个用户名,则会打开聊天窗口的一个新实例。这里的问题是如何检查该用户聊天窗口是否已打开以附加传入的聊天。 是否有与每个窗口关联的唯一id?如果是,则如何检查该特定窗口是否已打开

当用户单击用户名时创建聊天窗口新实例的代码:

private void UsersChatWith_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
    if (UsersChatWith.SelectedItem != null)
    {
         var SelItm = UsersChatWith.SelectedItem;
         ChatToUserid = ((UserDetail)(SelItm)).UserId;
         ChatToUserName = ((UserDetail)(SelItm)).User_FirstName;
    }
    //  UserPersonalChatPopUp.IsOpen = true;
    UserPersonalChatWindow chatwin = new UserPersonalChatWindow();
    chatwin.Title = ChatToUserName;
    chatwin.StaffUserId.Content = ChatToUserid;
    chatwin.Show();
}

在这里,每次我单击任何用户,新的聊天窗口就会打开。我需要知道在创建聊天窗口的新实例(如果尚未创建和打开)之前可以检查的条件。请建议。

您可以迭代当前窗口以确定是否存在

var window = Application.Current.Windows.OfType<UserPersonalChatWindow>()
.FirstOrDefault(x => x.StaffUserId.Content == id);
var window=Application.Current.Windows.OfType()
.FirstOrDefault(x=>x.StaffUserId.Content==id);