Browse Source

Border for Empty Image now fully working!

pull/586/head
jogibear9988 12 years ago
parent
commit
b865e4e8b6
  1. 8
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/AdornerLayer.cs
  2. 79
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/BorderForImageControl.cs
  3. 5
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/PlacementOperation.cs

8
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/AdornerLayer.cs

@ -227,8 +227,12 @@ namespace ICSharpCode.WpfDesign.Designer.Controls
var rt = (MatrixTransform) adorner.AdornedElement.TransformToAncestor(_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) 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 width = ((FrameworkElement) adorner.AdornedElement).Width;
var yOffset = rt.Matrix.OffsetY - (((FrameworkElement)adorner.AdornedElement).Height / 2); width = width > 0 ? width : 2.0;
var height = ((FrameworkElement)adorner.AdornedElement).Height;
height = height > 0 ? height : 2.0;
var xOffset = rt.Matrix.OffsetX - (width / 2);
var yOffset = rt.Matrix.OffsetY - (height / 2);
rt = new MatrixTransform(new Matrix(rt.Matrix.M11, rt.Matrix.M12, rt.Matrix.M21, rt.Matrix.M22, xOffset, yOffset)); rt = new MatrixTransform(new Matrix(rt.Matrix.M11, rt.Matrix.M12, rt.Matrix.M21, rt.Matrix.M22, xOffset, yOffset));
} }

79
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/BorderForImageControl.cs

@ -17,59 +17,55 @@
// DEALINGS IN THE SOFTWARE. // DEALINGS IN THE SOFTWARE.
using System; using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq; using System.Linq;
using System.Text;
using System.Windows; using System.Windows;
using System.Windows.Controls; using System.Windows.Controls;
using System.Windows.Input; using System.Windows.Input;
using System.Windows.Media; using System.Windows.Media;
using ICSharpCode.WpfDesign.Adorners; using ICSharpCode.WpfDesign.Adorners;
using ICSharpCode.WpfDesign.Designer.Controls;
using ICSharpCode.WpfDesign.Extensions; using ICSharpCode.WpfDesign.Extensions;
namespace ICSharpCode.WpfDesign.Designer.Extensions namespace ICSharpCode.WpfDesign.Designer.Extensions
{ {
[ExtensionFor(typeof(Image))] [ExtensionFor(typeof(Image))]
public class BorderForImageControl : PermanentAdornerProvider public class BorderForImageControl : PermanentAdornerProvider
{ {
AdornerPanel adornerPanel; AdornerPanel adornerPanel;
AdornerPanel cachedAdornerPanel; AdornerPanel cachedAdornerPanel;
Border border; Border border;
protected override void OnInitialized() protected override void OnInitialized()
{ {
base.OnInitialized(); base.OnInitialized();
this.ExtendedItem.PropertyChanged += OnPropertyChanged; this.ExtendedItem.PropertyChanged += OnPropertyChanged;
UpdateAdorner(); UpdateAdorner();
} }
protected override void OnRemove() protected override void OnRemove()
{ {
this.ExtendedItem.PropertyChanged -= OnPropertyChanged; this.ExtendedItem.PropertyChanged -= OnPropertyChanged;
base.OnRemove(); base.OnRemove();
} }
void OnPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) void OnPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{ {
if (sender == null || e.PropertyName == "Width" || e.PropertyName == "Height") if (sender == null || e.PropertyName == "Width" || e.PropertyName == "Height")
{ {
((DesignPanel) this.ExtendedItem.Services.DesignPanel).AdornerLayer.UpdateAdornersForElement(this.ExtendedItem.View, true); ((DesignPanel) this.ExtendedItem.Services.DesignPanel).AdornerLayer.UpdateAdornersForElement(this.ExtendedItem.View, true);
} }
} }
void UpdateAdorner() void UpdateAdorner()
{ {
var element = ExtendedItem.Component as UIElement; var element = ExtendedItem.Component as UIElement;
if (element != null) { if (element != null) {
CreateAdorner(); CreateAdorner();
} }
} }
private void CreateAdorner() private void CreateAdorner()
{ {
if (adornerPanel == null) { if (adornerPanel == null) {
@ -80,9 +76,12 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
border = new Border(); border = new Border();
border.BorderThickness = new Thickness(1); border.BorderThickness = new Thickness(1);
border.BorderBrush = new SolidColorBrush(Color.FromRgb(0xCC, 0xCC, 0xCC)); border.BorderBrush = new SolidColorBrush(Color.FromRgb(0xCC, 0xCC, 0xCC));
border.Background = Brushes.Transparent; border.Background = Brushes.Transparent;
border.IsHitTestVisible = true; border.IsHitTestVisible = true;
border.MouseDown += border_MouseDown; border.MouseDown += border_MouseDown;
border.MinWidth = 1;
border.MinHeight = 1;
AdornerPanel.SetPlacement(border, AdornerPlacement.FillContent); AdornerPanel.SetPlacement(border, AdornerPlacement.FillContent);
cachedAdornerPanel.Children.Add(border); cachedAdornerPanel.Children.Add(border);
} }
@ -92,15 +91,15 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
} }
} }
void border_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e) void border_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{ {
if (!Keyboard.IsKeyDown(Key.LeftAlt) && ((Image) this.ExtendedItem.View).Source == null) if (!Keyboard.IsKeyDown(Key.LeftAlt) && ((Image) this.ExtendedItem.View).Source == null)
{ {
e.Handled = true; e.Handled = true;
this.ExtendedItem.Services.Selection.SetSelectedComponents(new DesignItem[] {this.ExtendedItem}, this.ExtendedItem.Services.Selection.SetSelectedComponents(new DesignItem[] {this.ExtendedItem},
SelectionTypes.Auto); SelectionTypes.Auto);
((DesignPanel) this.ExtendedItem.Services.DesignPanel).Focus(); ((DesignPanel) this.ExtendedItem.Services.DesignPanel).Focus();
} }
} }
} }
} }

5
src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/PlacementOperation.cs

@ -220,11 +220,6 @@ namespace ICSharpCode.WpfDesign
if (element is FrameworkElement && size.Height < ((FrameworkElement)element).MinHeight) if (element is FrameworkElement && size.Height < ((FrameworkElement)element).MinHeight)
size.Height = ((FrameworkElement)element).Height; size.Height = ((FrameworkElement)element).Height;
if (element is FrameworkElement && size.Width == 0)
size.Width = element.DesiredSize.Width;
if (element is FrameworkElement && size.Height == 0)
size.Height = element.DesiredSize.Height;
return size; return size;
} }

Loading…
Cancel
Save