确定窗口实例是否已打开

时间:2014-12-30 09:10:27

标签: c# wpf windows

我正在构建一个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();
}

每次我点击任何用户,然后新的聊天窗口都会被打开。我需要知道在创建聊天窗口的新实例之前我可以检查的条件(如果尚未创建和打开)。请建议。< / p>

1 个答案:

答案 0 :(得分:3)

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

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