Отслеживайте количество открытых окон при их открытии тем или иным способом, например:
public class WindowService
{
private const int MaxNumberOfOpenWindows = 1;
private int _currentNumberOfOpenWindows = 0;
public void OpenWindow()
{
if (_currentNumberOfOpenWindows != MaxNumberOfOpenWindows)
{
Window window = new Window();
window.Closed += Window_Closed;
window.Show();
_currentNumberOfOpenWindows++;
}
}
private void Window_Closed(object sender, EventArgs e)
{
Window window = (Window)sender;
window.Closed -= Window_Closed;
_currentNumberOfOpenWindows--;
}
}