From edc132ea78b5512d8de7749b6ff058375d439339 Mon Sep 17 00:00:00 2001 From: jkuehner Date: Sun, 11 Aug 2013 17:27:07 +0200 Subject: [PATCH] RenderTransformOrigin should also look to Propertygrid changes --- .../RenderTransformOriginExtension.cs | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/RenderTransformOriginExtension.cs b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/RenderTransformOriginExtension.cs index add9d0306d..3449810b53 100644 --- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/RenderTransformOriginExtension.cs +++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/RenderTransformOriginExtension.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; +using System.ComponentModel; using System.Linq; using System.Text; using ICSharpCode.WpfDesign.Adorners; @@ -55,14 +56,13 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions var pointAbsNew = pointAbs + new Vector(e.HorizontalChange, e.VerticalChange); var pRel = adornerPanel.AbsoluteToRelative(pointAbsNew); - AdornerPanel.SetPlacement(renderTransformOriginThumb, - new RelativePlacement(HorizontalAlignment.Left, VerticalAlignment.Top){ XRelativeToContentWidth = pRel.X, YRelativeToContentHeight = pRel.Y }); - this.ExtendedItem.Properties.GetProperty(FrameworkElement.RenderTransformOriginProperty).SetValue(new Point(Math.Round(pRel.X, 4), Math.Round(pRel.Y, 4))); } Point renderTransformOrigin = new Point(0.5, 0.5); + DependencyPropertyDescriptor renderTransformOriginPropertyDescriptor; + protected override void OnInitialized() { base.OnInitialized(); @@ -75,6 +75,20 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions AdornerPanel.SetPlacement(renderTransformOriginThumb, new RelativePlacement(HorizontalAlignment.Left, VerticalAlignment.Top){XRelativeToContentWidth = renderTransformOrigin.X, YRelativeToContentHeight = renderTransformOrigin.Y}); + + renderTransformOriginPropertyDescriptor = DependencyPropertyDescriptor.FromProperty(FrameworkElement.RenderTransformOriginProperty, typeof(FrameworkElement)); + renderTransformOriginPropertyDescriptor.AddValueChanged(this.ExtendedItem.Component, OnRenderTransformOriginPropertyChanged); + } + + private void OnRenderTransformOriginPropertyChanged(object sender, EventArgs e) + { + var pRel = renderTransformOrigin; + if (this.ExtendedItem.Properties.GetProperty(FrameworkElement.RenderTransformOriginProperty).IsSet) + pRel = (Point)this.ExtendedItem.Properties.GetProperty(FrameworkElement.RenderTransformOriginProperty).ValueOnInstance; + + AdornerPanel.SetPlacement(renderTransformOriginThumb, + new RelativePlacement(HorizontalAlignment.Left, VerticalAlignment.Top){ XRelativeToContentWidth = pRel.X, YRelativeToContentHeight = pRel.Y }); + } void OnPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) @@ -82,6 +96,8 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions protected override void OnRemove() { + renderTransformOriginPropertyDescriptor.RemoveValueChanged(this.ExtendedItem.Component, OnRenderTransformOriginPropertyChanged); + base.OnRemove(); } }