перезагрузил окно wpf - PullRequest
0 голосов
/ 11 ноября 2010

У меня есть главное окно wpf, в этом окне я создаю новые подчиненные окна и добавляю их в словарь. Возможно, после закрытия ведомого окна оно снова показывалось.

public class MainWindow:Window
{
private dictionary<string, SlaveWindow> _winDic= new dictionary<string, SlaveWindow>();

public void SomeMethod()
{

var mySlaveWindow = new SlaveWindow();
//add to dictionary
_winDic.Add("mySlaveWindow",w);

//close slave window w


//show
_winDic[mySlaveWindow].Show();
}
}

Ответы [ 2 ]

1 голос
/ 11 ноября 2010

Этот следующий способ сделать это взят из этой страницы MSDN.

Подпишитесь на событие Закрытия для Окна и добавьте его в коде позади.

private bool m_close = false;
// Shadow Window.Close to make sure we bypass the Hide call in 
// the Closing event handler
public new void Close()
{
    m_close = true;
    base.Close();
}
private void Window_Closing(object sender, CancelEventArgs e)
{
    // If Close() was called, close the window (instead of hiding it)
    if (m_close == true)
    {
        return;
    }
    // Hide the window (instead of closing it)
    e.Cancel = true;
    this.Hide();
}

Это обеспечит окончательное закрытие вашего Окна и не оставит его висеть.

0 голосов
/ 11 ноября 2010

Вам нужно будет скрыть окно, а не закрывать его.

Если вы позвоните Hide(), окно исчезнет, ​​как и при вызове Close(), но вы сможете повторно показатьпозже, снова позвонив Show().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...