Форма WPF должна изменить размер, чтобы показать ее содержимое - PullRequest
0 голосов
/ 11 мая 2011

Когда окно WPF появляется впервые, его содержимое кажется замороженным.Для обновления контента мне нужно изменить размер формы, тогда она будет исправлена.Или я нажимаю TAB, затем нахожу список - он не виден - и щелкаю по нему и альт!Форма снова обновляет свой контент.

Что вы думаете?Странно, да?Заранее спасибо!

enter image description here

Редактировать:

private void Window_Loaded(object sender, RoutedEventArgs e)
{
   this.Show();

   while (!AppMain.needClose)
   {
      System.Windows.Forms.Application.DoEvents();
      DoThings();
   }
}

Ответы [ 2 ]

1 голос
/ 11 мая 2011

Когда ваше окно загружено, оно уже отображается, почему вы снова вызываете this.show () ??

1 голос
/ 11 мая 2011

Изменение размера окна вынудит внутренние устройства сделать недействительными и перекрасить.Вы можете попытаться сделать недействительной форму, когда она загружена, чтобы заставить ее делать то же самое:

private void Window_Loaded(object sender, RoutedEventArgs e)
{
   this.Show();

   this.Invalidate();

   while (!AppMain.needClose)
   {
      System.Windows.Forms.Application.DoEvents();
      DoThings();
   }
}

Если вы не выполняете какую-то пользовательскую перекачку сообщений, то стандартный обработчик сообщений форм должен делать это в то время как циклвы.Возможно, вы обнаружите, что, поскольку вы перехватываете событие загрузки окна, вы прекращаете инициализацию от завершения.

Вызов DoEvents - это неприятный запах кода в моем опыте.Если вам нужно периодически что-то делать, лучше запускать его из таймера.

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