Я обнаружил, что попытка свернуть, а затем восстановить содержащее окно в коде не устранило его, несмотря на то, что минимизация и восстановление работали, когда пользователь это делал. Аннулирование макета элемента управления или визуального или аранжировки не сработало. Максимизация и восстановление окна в коде сделали, но визуально раздражает, но это привело меня к двум разумным обходным путям:
Настройте WebView.Visibility
на Collapsed
в XAML и либо:
- обрабатывает событие
UserControl.Loaded
и устанавливает видимость на Visible
; или
- обрабатывает событие
WebView.NavigationStarting
и устанавливает его в Visible
.
Это проще всего, если вначале свернуть не приведет к недопустимому визуальному нарушению. Ранний вход через событие Loaded
помогает. Начало Hidden
не работает.
Оставьте WebView.Visibility
настроенным на Visible
в XAML, обработайте событие WebView.NavigationStarted
в UserControl
, а затем, если обработчик, вызываемый в этом процессе в первый раз, делает что-то подобное, чтобы вызвать изменение размера элемента управления а затем восстановить исходный размер:
var height = Height;
Height = 0;
Application.Current.Dispatcher.BeginInvoke(
(Action)(() => { Height = height; }),
DispatcherPriority.Input
);
По-видимому, требуется отправка восстановления значения (хотя, может быть, достаточно вызвать что-то вроде InvalidateLayout()
между ними).