Browse Source

Merge pull request #443 from gumme/WpfDesignerCanvasPlacement

Minor changes to allow inheritance from CanvasPlacementSupport
pull/478/head
Siegfried Pammer 11 years ago
parent
commit
1b1a77360a
  1. 19
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/CanvasPlacementSupport.cs

19
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/CanvasPlacementSupport.cs

@ -30,9 +30,11 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions @@ -30,9 +30,11 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
/// Provides <see cref="IPlacementBehavior"/> behavior for <see cref="Canvas"/>.
/// </summary>
[ExtensionFor(typeof(Canvas), OverrideExtension=typeof(DefaultPlacementBehavior))]
public sealed class CanvasPlacementSupport : SnaplinePlacementBehavior
public class CanvasPlacementSupport : SnaplinePlacementBehavior
{
GrayOutDesignerExceptActiveArea grayOut;
FrameworkElement extendedComponent;
FrameworkElement extendedView;
static double GetCanvasProperty(UIElement element, DependencyProperty d)
{
@ -48,6 +50,14 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions @@ -48,6 +50,14 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
return element.ReadLocalValue(d) != DependencyProperty.UnsetValue;
}
protected override void OnInitialized()
{
base.OnInitialized();
extendedComponent = (FrameworkElement)ExtendedItem.Component;
extendedView = (FrameworkElement)this.ExtendedItem.View;
}
public override void SetPosition(PlacementInformation info)
{
base.SetPosition(info);
@ -58,7 +68,7 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions @@ -58,7 +68,7 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
if (IsPropertySet(child, Canvas.RightProperty))
{
var newR = ((Canvas) ExtendedItem.Component).ActualWidth - newPosition.Right;
var newR = extendedComponent.ActualWidth - newPosition.Right;
if (newR != GetCanvasProperty(child, Canvas.RightProperty))
info.Item.Properties.GetAttachedProperty(Canvas.RightProperty).SetValue(newR);
}
@ -70,7 +80,7 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions @@ -70,7 +80,7 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
if (IsPropertySet(child, Canvas.BottomProperty))
{
var newB = ((Canvas)ExtendedItem.Component).ActualHeight - newPosition.Bottom;
var newB = extendedComponent.ActualHeight - newPosition.Bottom;
if (newB != GetCanvasProperty(child, Canvas.BottomProperty))
info.Item.Properties.GetAttachedProperty(Canvas.BottomProperty).SetValue(newB);
}
@ -81,8 +91,7 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions @@ -81,8 +91,7 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
if (info.Item == Services.Selection.PrimarySelection)
{
var cv = this.ExtendedItem.View as Canvas;
var b = new Rect(0, 0, cv.ActualWidth, cv.ActualHeight);
var b = new Rect(0, 0, extendedView.ActualWidth, extendedView.ActualHeight);
// only for primary selection:
if (grayOut != null)
{

Loading…
Cancel
Save