Browse Source

Border for Empty Image now fully working!

pull/586/head
jogibear9988 11 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 @@ -227,8 +227,12 @@ namespace ICSharpCode.WpfDesign.Designer.Controls
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);
var width = ((FrameworkElement) adorner.AdornedElement).Width;
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));
}

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

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

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

@ -220,11 +220,6 @@ namespace ICSharpCode.WpfDesign @@ -220,11 +220,6 @@ namespace ICSharpCode.WpfDesign
if (element is FrameworkElement && size.Height < ((FrameworkElement)element).MinHeight)
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;
}

Loading…
Cancel
Save