diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/AdornerLayer.cs b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/AdornerLayer.cs
index 6dd91b6590..75d432d950 100644
--- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/AdornerLayer.cs
+++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/AdornerLayer.cs
@@ -32,7 +32,7 @@ namespace ICSharpCode.WpfDesign.Designer.Controls
///
/// A control that displays adorner panels.
///
- sealed class AdornerLayer : Panel
+ public sealed class AdornerLayer : Panel
{
#region AdornerPanelCollection
internal sealed class AdornerPanelCollection : ICollection, IReadOnlyCollection
@@ -218,26 +218,24 @@ namespace ICSharpCode.WpfDesign.Designer.Controls
}
return new Size(0, 0);
}
-
+
protected override Size ArrangeOverride(Size finalSize)
{
foreach (AdornerPanel adorner in this.Children) {
- if (adorner.AdornedElement.IsDescendantOf(_designPanel)) {
- adorner.RenderTransform = (Transform)adorner.AdornedElement.TransformToAncestor(_designPanel);
- }
+ if (adorner.AdornedElement.IsDescendantOf(_designPanel))
+ {
+ var rt = (MatrixTransform) adorner.AdornedElement.TransformToAncestor(_designPanel);
+ if (adorner.AdornedDesignItem != null && adorner.AdornedDesignItem.Parent != null && adorner.AdornedDesignItem.Parent.View is Canvas && adorner.AdornedElement.RenderSize.Height == 0 && adorner.AdornedElement.RenderSize.Width == 0)
+ {
+ var xOffset = rt.Matrix.OffsetX - (((FrameworkElement)adorner.AdornedElement).Width / 2);
+ var yOffset = rt.Matrix.OffsetY - (((FrameworkElement)adorner.AdornedElement).Height / 2);
+ rt = new MatrixTransform(new Matrix(rt.Matrix.M11, rt.Matrix.M12, rt.Matrix.M21, rt.Matrix.M22, xOffset, yOffset));
+ }
- //Fix Adorner Display of Image (or maybe other components...)
-
- var size = adorner.DesiredSize;
- //if (size.Height==0 && size.Width==0 && adorner.AdornedElement is FrameworkElement)
- // size = new Size(((FrameworkElement)adorner.AdornedElement).Width, ((FrameworkElement)adorner.AdornedElement).Height);
-
- //if (double.IsNaN(size.Width))
- // size.Width = 0;
- //if (double.IsNaN(size.Height))
- // size.Height = 0;
+ adorner.RenderTransform = rt;
+ }
- adorner.Arrange(new Rect(new Point(0, 0), size));
+ adorner.Arrange(new Rect(new Point(0, 0), adorner.DesiredSize));
}
return finalSize;
}
diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/CanvasPositionHandle.cs b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/CanvasPositionHandle.cs
index 17a1663c29..d1e10016cc 100644
--- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/CanvasPositionHandle.cs
+++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/CanvasPositionHandle.cs
@@ -146,7 +146,7 @@ namespace ICSharpCode.WpfDesign.Designer.Controls
if (double.IsNaN(wr))
{
wr = (double) rightDescriptor.GetValue(adornedControl);
- wr = canvas.ActualWidth - (adornedControl.ActualWidth + wr);
+ wr = canvas.ActualWidth - (PlacementOperation.GetRealElementSize(adornedControl).Width + wr);
}
else
{
@@ -167,7 +167,7 @@ namespace ICSharpCode.WpfDesign.Designer.Controls
if (double.IsNaN(wr))
{
wr = (double)bottomDescriptor.GetValue(adornedControl);
- wr = canvas.ActualHeight - (adornedControl.ActualHeight + wr);
+ wr = canvas.ActualHeight - (PlacementOperation.GetRealElementSize(adornedControl).Height + wr);
}
else
{
@@ -188,7 +188,7 @@ namespace ICSharpCode.WpfDesign.Designer.Controls
if (double.IsNaN(wr))
{
wr = (double) leftDescriptor.GetValue(adornedControl);
- wr = canvas.ActualWidth - (adornedControl.ActualWidth + wr);
+ wr = canvas.ActualWidth - (PlacementOperation.GetRealElementSize(adornedControl).Width + wr);
}
else
{
@@ -209,7 +209,7 @@ namespace ICSharpCode.WpfDesign.Designer.Controls
if (double.IsNaN(wr))
{
wr = (double)topDescriptor.GetValue(adornedControl);
- wr = canvas.ActualHeight - (adornedControl.ActualHeight + wr);
+ wr = canvas.ActualHeight - (PlacementOperation.GetRealElementSize(adornedControl).Height + wr);
}
else
{
diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/ControlStyles.xaml b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/ControlStyles.xaml
index f6deec886b..a7c17a86a2 100644
--- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/ControlStyles.xaml
+++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/ControlStyles.xaml
@@ -2,7 +2,7 @@
-
+