From 644c4fb517608ab3507cf0b31270eb74852ebc30 Mon Sep 17 00:00:00 2001 From: Nikita Tsukanov Date: Fri, 4 Sep 2015 02:18:48 +0300 Subject: [PATCH] Designer: Improved render process handling --- .../Perspex.Designer/PerspexDesigner.xaml.cs | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/Windows/Perspex.Designer/PerspexDesigner.xaml.cs b/src/Windows/Perspex.Designer/PerspexDesigner.xaml.cs index 6cce62a1ec..242a150c94 100644 --- a/src/Windows/Perspex.Designer/PerspexDesigner.xaml.cs +++ b/src/Windows/Perspex.Designer/PerspexDesigner.xaml.cs @@ -66,11 +66,19 @@ namespace Perspex.Designer private void _host_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { - if (e.PropertyName == nameof(ProcessHost.WindowHandle) && _host.WindowHandle != IntPtr.Zero) + if (e.PropertyName == nameof(ProcessHost.WindowHandle)) { - var host = new WindowHost(); - host.SetWindow(_host.WindowHandle); - NativeContainer.Content = new WindowsFormsHost() {Child = host}; + if (NativeContainer.Content != null) + { + ((WindowHost)((WindowsFormsHost)NativeContainer.Content).Child).Dispose(); + NativeContainer.Content = null; + } + if (_host.WindowHandle != IntPtr.Zero) + { + var host = new WindowHost(); + host.SetWindow(_host.WindowHandle); + NativeContainer.Content = new WindowsFormsHost() {Child = host}; + } } } @@ -88,7 +96,7 @@ namespace Perspex.Designer private void OnXamlChanged() { - if (!_host.IsAlive) + if (!_host.IsAlive && TargetExe != null) _host.Start(TargetExe, Xaml); else _host.UpdateXaml(Xaml);