У меня есть главное окно wpf, в этом окне я создаю новые подчиненные окна и добавляю в словаре. Возможно, после закрытия ведомого окна он еще раз показал.reloaded wpf window
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();
}
}
Некоторые вопросы: 1) Я не понимаю, почему только один из них использует Dispatcher.BeginInvoke - если первый нужен, не нужен ли ему второй пример? 2) не должен ли ваш второй пример вызывать base.OnClosing и 3) любое преимущество использования Visibility, а не Hide(), которое более описывает то, что делается? –
Хорошие вопросы. Я не делал этот код сам, но я считаю, что Dispatcher.BeginInvoke используется, чтобы избежать «InvalidOperationException - отображается видимость, или Show, ShowDialog или Close вызывается, когда окно закрывается» здесь http: // msdn.microsoft.com/en-us/library/system.windows.window.closing(v=VS.90).aspx. Согласен (а), скрыть() более описательно. Я также обновил свой ответ на то, что Microsoft рекомендует по этой ссылке. http://msdn.microsoft.com/en-us/library/cc656741(VS.90).aspx –
Спасибо, Мелейк, это очень хороший пример. – 2010-11-11 08:46:03