diff --git a/src/Perspex.Application/Designer/Design.cs b/src/Perspex.Application/Designer/Design.cs index 72bb23c067..d27646d6c7 100644 --- a/src/Perspex.Application/Designer/Design.cs +++ b/src/Perspex.Application/Designer/Design.cs @@ -49,24 +49,15 @@ namespace Perspex { return control.GetValue(DataContextProperty); } - - static Design() - { - WidthProperty.Changed.Subscribe(OnChanged); - HeightProperty.Changed.Subscribe(OnChanged); - DataContextProperty.Changed.Subscribe(OnChanged); - } - - static void OnChanged(PerspexPropertyChangedEventArgs args) - { - if(!IsDesignMode) - return; - if (args.Property == WidthProperty) - ((Control) args.Sender).Width = (double) args.NewValue; - if (args.Property == HeightProperty) - ((Control)args.Sender).Height = (double)args.NewValue; - if (args.Property == DataContextProperty) - ((Control) args.Sender).DataContext = args.NewValue; + + internal static void ApplyDesignerProperties(Control target, Control source) + { + if (source.IsSet(WidthProperty)) + target.Width = source.GetValue(WidthProperty); + if (source.IsSet(HeightProperty)) + target.Height = source.GetValue(HeightProperty); + if (source.IsSet(DataContextProperty)) + target.DataContext = source.GetValue(DataContextProperty); } } } diff --git a/src/Perspex.Application/Designer/DesignerAssist.cs b/src/Perspex.Application/Designer/DesignerAssist.cs index 8a0bbc2449..31f716b8be 100644 --- a/src/Perspex.Application/Designer/DesignerAssist.cs +++ b/src/Perspex.Application/Designer/DesignerAssist.cs @@ -60,18 +60,20 @@ namespace Perspex.DesignerSupport { Window window; + Control original; using (PlatformManager.DesignerMode()) { - var obj = ((XamlXmlLoader)new PerspexXamlLoader()).Load(new MemoryStream(Encoding.UTF8.GetBytes(xaml))); - window = obj as Window; + original =(Control)((XamlXmlLoader)new PerspexXamlLoader()).Load(new MemoryStream(Encoding.UTF8.GetBytes(xaml))); + window = original as Window; if (window == null) { - window = new Window() {Content = obj}; + window = new Window() {Content = original}; } } s_currentWindow?.Close(); s_currentWindow = window; window.Show(); + Design.ApplyDesignerProperties(window, original); Api.OnWindowCreated?.Invoke(window.PlatformImpl.Handle.Handle); Api.OnResize?.Invoke(); }