Browse Source

- Removed selection of RowDefinitions/ColumnDefinitions from GridRailAdorner

- Display Splitter and GridUnitSelector on MouseEnter rather than if a particular Row/column is clicked and selected.
- Fix bug : Invert Row lengths that appears in left GridRailAdorner
- Fix bug : Update code which caused Row/Column lengths to be displayed at wrong positions after creation of new RowDefinition/ColumnDefinition. 
- Fix bug : Grid now remains selected while being adorned by GridRailAdorner.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/wpfdesigner@5837 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
pull/1/head
Kumar Devvrat 16 years ago
parent
commit
6ecd265791
  1. 286
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/GridAdorner.cs
  2. 134
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/GridUnitSelector.xaml.cs
  3. 10
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/GridAdornerProvider.cs

286
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/GridAdorner.cs

@ -13,7 +13,7 @@ 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.XamlDom;
using ICSharpCode.WpfDesign.Adorners; using ICSharpCode.WpfDesign.Adorners;
namespace ICSharpCode.WpfDesign.Designer.Controls namespace ICSharpCode.WpfDesign.Designer.Controls
@ -28,8 +28,8 @@ namespace ICSharpCode.WpfDesign.Designer.Controls
bgBrush = new SolidColorBrush(Color.FromArgb(0x30, 0x20, 0x20, 0xff)); bgBrush = new SolidColorBrush(Color.FromArgb(0x30, 0x20, 0x20, 0xff));
bgBrush.Freeze(); bgBrush.Freeze();
selBrush = new SolidColorBrush(Color.FromArgb(0xC0, 0xff, 0xb7, 0x4f)); //selBrush = new SolidColorBrush(Color.FromArgb(0xC0, 0xff, 0xb7, 0x4f));
selBrush.Freeze(); //selBrush.Freeze();
} }
readonly DesignItem gridItem; readonly DesignItem gridItem;
@ -45,6 +45,8 @@ namespace ICSharpCode.WpfDesign.Designer.Controls
public const double RailSize = 10; public const double RailSize = 10;
public const double RailDistance = 6; public const double RailDistance = 6;
public const double SplitterWidth = 10; public const double SplitterWidth = 10;
bool displayUnitSelector; // Indicates whether Grid UnitSeletor should be displayed.
public GridRailAdorner(DesignItem gridItem, AdornerPanel adornerPanel, Orientation orientation) public GridRailAdorner(DesignItem gridItem, AdornerPanel adornerPanel, Orientation orientation)
{ {
@ -55,9 +57,8 @@ namespace ICSharpCode.WpfDesign.Designer.Controls
this.grid = (Grid)gridItem.Component; this.grid = (Grid)gridItem.Component;
this.adornerPanel = adornerPanel; this.adornerPanel = adornerPanel;
this.orientation = orientation; this.orientation = orientation;
this.displayUnitSelector=false;
this.unitSelector = new GridUnitSelector(this); this.unitSelector = new GridUnitSelector(this);
adornerPanel.Children.Add(unitSelector); adornerPanel.Children.Add(unitSelector);
if (orientation == Orientation.Horizontal) { if (orientation == Orientation.Horizontal) {
@ -70,24 +71,10 @@ namespace ICSharpCode.WpfDesign.Designer.Controls
unitSelector.Orientation = orientation; unitSelector.Orientation = orientation;
previewAdorner.IsPreview = true; previewAdorner.IsPreview = true;
previewAdorner.IsHitTestVisible = false; previewAdorner.IsHitTestVisible = false;
unitSelector.Visibility = Visibility.Hidden;
} }
public void SelectionChanged()
{
if (orientation == Orientation.Vertical) {
if (gridItem.Properties["RowDefinitions"].CollectionElements.Any(e => gridItem.Services.Selection.IsComponentSelected(e)))
unitSelector.Visibility = Visibility.Visible;
else
unitSelector.Visibility = Visibility.Hidden;
} else {
if (gridItem.Properties["ColumnDefinitions"].CollectionElements.Any(e => gridItem.Services.Selection.IsComponentSelected(e)))
unitSelector.Visibility = Visibility.Visible;
else
unitSelector.Visibility = Visibility.Hidden;
}
InvalidateVisual();
}
protected override void OnRender(DrawingContext drawingContext) protected override void OnRender(DrawingContext drawingContext)
{ {
base.OnRender(drawingContext); base.OnRender(drawingContext);
@ -100,14 +87,10 @@ namespace ICSharpCode.WpfDesign.Designer.Controls
foreach (var colItem in colCollection.CollectionElements) { foreach (var colItem in colCollection.CollectionElements) {
ColumnDefinition column = colItem.Component as ColumnDefinition; ColumnDefinition column = colItem.Component as ColumnDefinition;
if (column.ActualWidth < 0) continue; if (column.ActualWidth < 0) continue;
Rect selRect = new Rect(column.Offset, 0, column.ActualWidth, RailSize);
GridLength len = (GridLength)column.GetValue(ColumnDefinition.WidthProperty); GridLength len = (GridLength)column.GetValue(ColumnDefinition.WidthProperty);
FormattedText text = new FormattedText(GridLengthToText(len), CultureInfo.CurrentCulture, FlowDirection.LeftToRight, new Typeface("Sergio UI"), 10, Brushes.Black); FormattedText text = new FormattedText(GridLengthToText(len), CultureInfo.CurrentCulture, FlowDirection.LeftToRight, new Typeface("Sergio UI"), 10, Brushes.Black);
text.TextAlignment = TextAlignment.Center; text.TextAlignment = TextAlignment.Center;
if (gridItem.Services.Selection.IsComponentSelected(colItem)) {
drawingContext.DrawRectangle(selBrush, null, selRect);
}
drawingContext.DrawText(text, new Point(column.Offset + column.ActualWidth / 2, 0)); drawingContext.DrawText(text, new Point(column.Offset + column.ActualWidth / 2, 0));
} }
} else { } else {
@ -118,19 +101,12 @@ namespace ICSharpCode.WpfDesign.Designer.Controls
foreach (var rowItem in rowCollection.CollectionElements) { foreach (var rowItem in rowCollection.CollectionElements) {
RowDefinition row = rowItem.Component as RowDefinition; RowDefinition row = rowItem.Component as RowDefinition;
if (row.ActualHeight < 0) continue; if (row.ActualHeight < 0) continue;
Rect selRect = new Rect(0, row.Offset, RailSize, row.ActualHeight);
GridLength len = (GridLength)row.GetValue(RowDefinition.HeightProperty); GridLength len = (GridLength)row.GetValue(RowDefinition.HeightProperty);
FormattedText text = new FormattedText(GridLengthToText(len), CultureInfo.CurrentCulture, FlowDirection.LeftToRight, new Typeface("Sergio UI"), 10, Brushes.Black); FormattedText text = new FormattedText(GridLengthToText(len), CultureInfo.CurrentCulture, FlowDirection.LeftToRight, new Typeface("Sergio UI"), 10, Brushes.Black);
text.TextAlignment = TextAlignment.Center; text.TextAlignment = TextAlignment.Center;
if (gridItem.Services.Selection.IsComponentSelected(rowItem)) { drawingContext.PushTransform(new RotateTransform(-90));
drawingContext.DrawRectangle(selBrush, null, selRect); drawingContext.DrawText(text, new Point((row.Offset + row.ActualHeight / 2)*-1, 0));
}
drawingContext.PushTransform(new RotateTransform(-270));
drawingContext.PushTransform(new TranslateTransform(0, -10));
drawingContext.DrawText(text, new Point(row.Offset + row.ActualHeight / 2, 0));
drawingContext.Pop();
drawingContext.Pop(); drawingContext.Pop();
} }
} }
@ -140,91 +116,143 @@ namespace ICSharpCode.WpfDesign.Designer.Controls
protected override void OnMouseEnter(MouseEventArgs e) protected override void OnMouseEnter(MouseEventArgs e)
{ {
base.OnMouseEnter(e); base.OnMouseEnter(e);
this.Cursor = Cursors.Cross;
if (orientation == Orientation.Vertical) { RelativePlacement rpUnitSelector = new RelativePlacement();
double insertionPosition = e.GetPosition(this).Y; if (orientation == Orientation.Vertical)
RowDefinition current = grid.RowDefinitions {
.FirstOrDefault(r => insertionPosition >= r.Offset && double insertionPosition = e.GetPosition(this).Y;
insertionPosition <= (r.Offset + r.ActualHeight)); RowDefinition current = grid.RowDefinitions
.FirstOrDefault(r => insertionPosition >= r.Offset &&
if (current == null || !gridItem.Services.Selection.IsComponentSelected(gridItem.Services.Component.GetDesignItem(current))) insertionPosition <= (r.Offset + r.ActualHeight));
return; if (current != null)
} else { {
double insertionPosition = e.GetPosition(this).X; DesignItem component = this.gridItem.Services.Component.GetDesignItem(current);
ColumnDefinition current = grid.ColumnDefinitions rpUnitSelector.XOffset = -(RailSize + RailDistance) * 2.75;
.FirstOrDefault(r => insertionPosition >= r.Offset && rpUnitSelector.WidthOffset = RailSize + RailDistance;
insertionPosition <= (r.Offset + r.ActualWidth)); rpUnitSelector.WidthRelativeToContentWidth = 1;
rpUnitSelector.HeightOffset = 55;
if (current == null || !gridItem.Services.Selection.IsComponentSelected(gridItem.Services.Component.GetDesignItem(current))) rpUnitSelector.YOffset = current.Offset + current.ActualHeight / 2 - 25;
return; unitSelector.SelectedItem = component;
} unitSelector.Unit = ((GridLength)component.Properties[RowDefinition.HeightProperty].ValueOnInstance).GridUnitType;
displayUnitSelector = true;
adornerPanel.Children.Add(previewAdorner); }
else
{
displayUnitSelector = false;
}
}
else
{
double insertionPosition = e.GetPosition(this).X;
ColumnDefinition current = grid.ColumnDefinitions
.FirstOrDefault(r => insertionPosition >= r.Offset &&
insertionPosition <= (r.Offset + r.ActualWidth));
if (current != null)
{
DesignItem component = this.gridItem.Services.Component.GetDesignItem(current);
Debug.Assert(component != null);
rpUnitSelector.YOffset = -(RailSize + RailDistance) * 2.20;
rpUnitSelector.HeightOffset = RailSize + RailDistance;
rpUnitSelector.HeightRelativeToContentHeight = 1;
rpUnitSelector.WidthOffset = 75;
rpUnitSelector.XOffset = current.Offset + current.ActualWidth / 2 - 35;
unitSelector.SelectedItem = component;
unitSelector.Unit = ((GridLength)component.Properties[ColumnDefinition.WidthProperty].ValueOnInstance).GridUnitType;
displayUnitSelector = true;
}
else
{
displayUnitSelector = false;
}
}
if(displayUnitSelector)
unitSelector.Visibility = Visibility.Visible;
if(!adornerPanel.Children.Contains(previewAdorner))
adornerPanel.Children.Add(previewAdorner);
} }
protected override void OnMouseMove(MouseEventArgs e) protected override void OnMouseMove(MouseEventArgs e)
{ {
base.OnMouseMove(e); base.OnMouseMove(e);
RelativePlacement rp = new RelativePlacement(); RelativePlacement rp = new RelativePlacement();
RelativePlacement rpUnitSelector = new RelativePlacement(); RelativePlacement rpUnitSelector = new RelativePlacement();
if (orientation == Orientation.Vertical) { if (orientation == Orientation.Vertical)
double insertionPosition = e.GetPosition(this).Y; {
RowDefinition current = grid.RowDefinitions double insertionPosition = e.GetPosition(this).Y;
.FirstOrDefault(r => insertionPosition >= r.Offset && RowDefinition current = grid.RowDefinitions
insertionPosition <= (r.Offset + r.ActualHeight)); .FirstOrDefault(r => insertionPosition >= r.Offset &&
insertionPosition <= (r.Offset + r.ActualHeight));
DesignItem component;
rp.XOffset = -(RailSize + RailDistance);
if (current == null || !gridItem.Services.Selection.IsComponentSelected(component = gridItem.Services.Component.GetDesignItem(current))) rp.WidthOffset = RailSize + RailDistance;
return; rp.WidthRelativeToContentWidth = 1;
rp.HeightOffset = SplitterWidth;
rp.XOffset = -(RailSize + RailDistance); rp.YOffset = e.GetPosition(this).Y - SplitterWidth / 2;
rp.WidthOffset = RailSize + RailDistance; if (current != null)
rp.WidthRelativeToContentWidth = 1; {
rp.HeightOffset = SplitterWidth; DesignItem component = this.gridItem.Services.Component.GetDesignItem(current);
rp.YOffset = e.GetPosition(this).Y - SplitterWidth / 2; rpUnitSelector.XOffset = -(RailSize + RailDistance) * 2.75;
rpUnitSelector.WidthOffset = RailSize + RailDistance;
rpUnitSelector.XOffset = -(RailSize + RailDistance) * 2.75; rpUnitSelector.WidthRelativeToContentWidth = 1;
rpUnitSelector.WidthOffset = RailSize + RailDistance; rpUnitSelector.HeightOffset = 55;
rpUnitSelector.WidthRelativeToContentWidth = 1; rpUnitSelector.YOffset = current.Offset + current.ActualHeight / 2 - 25;
rpUnitSelector.HeightOffset = 55; unitSelector.SelectedItem = component;
rpUnitSelector.YOffset = current.Offset + current.ActualHeight / 2 - 25; unitSelector.Unit = ((GridLength)component.Properties[RowDefinition.HeightProperty].ValueOnInstance).GridUnitType;
unitSelector.SelectedItem = component; displayUnitSelector = true;
unitSelector.Unit = ((GridLength)component.Properties[RowDefinition.HeightProperty].ValueOnInstance).GridUnitType; }
} else { else
double insertionPosition = e.GetPosition(this).X; {
ColumnDefinition current = grid.ColumnDefinitions displayUnitSelector = false;
.FirstOrDefault(r => insertionPosition >= r.Offset && }
insertionPosition <= (r.Offset + r.ActualWidth)); }
else
DesignItem component; {
double insertionPosition = e.GetPosition(this).X;
if (current == null || !gridItem.Services.Selection.IsComponentSelected(component = gridItem.Services.Component.GetDesignItem(current))) ColumnDefinition current = grid.ColumnDefinitions
return; .FirstOrDefault(r => insertionPosition >= r.Offset &&
insertionPosition <= (r.Offset + r.ActualWidth));
rp.YOffset = -(RailSize + RailDistance);
rp.HeightOffset = RailSize + RailDistance; rp.YOffset = -(RailSize + RailDistance);
rp.HeightRelativeToContentHeight = 1; rp.HeightOffset = RailSize + RailDistance;
rp.WidthOffset = SplitterWidth; rp.HeightRelativeToContentHeight = 1;
rp.XOffset = e.GetPosition(this).X - SplitterWidth / 2; rp.WidthOffset = SplitterWidth;
rp.XOffset = e.GetPosition(this).X - SplitterWidth / 2;
rpUnitSelector.YOffset = -(RailSize + RailDistance) * 2.75;
rpUnitSelector.HeightOffset = RailSize + RailDistance; if (current != null)
rpUnitSelector.HeightRelativeToContentHeight = 1; {
rpUnitSelector.WidthOffset = 75; DesignItem component = this.gridItem.Services.Component.GetDesignItem(current);
rpUnitSelector.XOffset = current.Offset + current.ActualWidth / 2 - 35; Debug.Assert(component != null);
unitSelector.SelectedItem = component; rpUnitSelector.YOffset = -(RailSize + RailDistance) * 2.20;
unitSelector.Unit = ((GridLength)component.Properties[ColumnDefinition.WidthProperty].ValueOnInstance).GridUnitType; rpUnitSelector.HeightOffset = RailSize + RailDistance;
} rpUnitSelector.HeightRelativeToContentHeight = 1;
rpUnitSelector.WidthOffset = 75;
AdornerPanel.SetPlacement(previewAdorner, rp); rpUnitSelector.XOffset = current.Offset + current.ActualWidth / 2 - 35;
AdornerPanel.SetPlacement(unitSelector, rpUnitSelector); unitSelector.SelectedItem = component;
unitSelector.Unit = ((GridLength)component.Properties[ColumnDefinition.WidthProperty].ValueOnInstance).GridUnitType;
displayUnitSelector = true;
}
else
{
displayUnitSelector = false;
}
}
AdornerPanel.SetPlacement(previewAdorner, rp);
if (displayUnitSelector)
AdornerPanel.SetPlacement(unitSelector, rpUnitSelector);
} }
protected override void OnMouseLeave(MouseEventArgs e) protected override void OnMouseLeave(MouseEventArgs e)
{ {
base.OnMouseLeave(e); base.OnMouseLeave(e);
adornerPanel.Children.Remove(previewAdorner); Mouse.UpdateCursor();
if (!unitSelector.IsMouseOver)
{
unitSelector.Visibility = Visibility.Hidden;
displayUnitSelector = false;
}
if(adornerPanel.Children.Contains(previewAdorner))
adornerPanel.Children.Remove(previewAdorner);
} }
protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e) protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)
@ -257,19 +285,7 @@ namespace ICSharpCode.WpfDesign.Designer.Controls
if (currentRow == null) if (currentRow == null)
currentRow = gridItem.Services.Component.GetDesignItem(grid.RowDefinitions.Last()); currentRow = gridItem.Services.Component.GetDesignItem(grid.RowDefinitions.Last());
unitSelector.SelectedItem = currentRow; unitSelector.SelectedItem = currentRow;
if (!gridItem.Services.Selection.IsComponentSelected(currentRow)) {
gridItem.Services.Selection.SetSelectedComponents(new DesignItem[] { currentRow }, SelectionTypes.Auto);
changeGroup.Commit();
if (!adornerPanel.Children.Contains(previewAdorner))
adornerPanel.Children.Add(previewAdorner);
OnMouseMove(e);
InvalidateVisual();
return;
}
for (int i = 0; i < grid.RowDefinitions.Count; i++) { for (int i = 0; i < grid.RowDefinitions.Count; i++) {
RowDefinition row = grid.RowDefinitions[i]; RowDefinition row = grid.RowDefinitions[i];
if (row.Offset > insertionPosition) continue; if (row.Offset > insertionPosition) continue;
@ -285,9 +301,9 @@ namespace ICSharpCode.WpfDesign.Designer.Controls
newRowDefinition.Properties[RowDefinition.HeightProperty].SetValue(newLength2); newRowDefinition.Properties[RowDefinition.HeightProperty].SetValue(newLength2);
FixIndicesAfterSplit(i, Grid.RowProperty, Grid.RowSpanProperty); FixIndicesAfterSplit(i, Grid.RowProperty, Grid.RowSpanProperty);
grid.UpdateLayout();
changeGroup.Commit(); changeGroup.Commit();
gridItem.Services.Selection.SetSelectedComponents(new DesignItem[] { newRowDefinition }, SelectionTypes.Auto); break;
break;
} }
} }
} else { } else {
@ -315,17 +331,6 @@ namespace ICSharpCode.WpfDesign.Designer.Controls
currentColumn = gridItem.Services.Component.GetDesignItem(grid.ColumnDefinitions.Last()); currentColumn = gridItem.Services.Component.GetDesignItem(grid.ColumnDefinitions.Last());
unitSelector.SelectedItem = currentColumn; unitSelector.SelectedItem = currentColumn;
if (!gridItem.Services.Selection.IsComponentSelected(currentColumn)) {
gridItem.Services.Selection.SetSelectedComponents(new DesignItem[] { currentColumn }, SelectionTypes.Auto);
changeGroup.Commit();
if (!adornerPanel.Children.Contains(previewAdorner))
adornerPanel.Children.Add(previewAdorner);
OnMouseMove(e);
InvalidateVisual();
return;
}
for (int i = 0; i < grid.ColumnDefinitions.Count; i++) { for (int i = 0; i < grid.ColumnDefinitions.Count; i++) {
ColumnDefinition column = grid.ColumnDefinitions[i]; ColumnDefinition column = grid.ColumnDefinitions[i];
if (column.Offset > insertionPosition) continue; if (column.Offset > insertionPosition) continue;
@ -341,11 +346,12 @@ namespace ICSharpCode.WpfDesign.Designer.Controls
newColumnDefinition.Properties[ColumnDefinition.WidthProperty].SetValue(newLength2); newColumnDefinition.Properties[ColumnDefinition.WidthProperty].SetValue(newLength2);
FixIndicesAfterSplit(i, Grid.ColumnProperty, Grid.ColumnSpanProperty); FixIndicesAfterSplit(i, Grid.ColumnProperty, Grid.ColumnSpanProperty);
changeGroup.Commit(); changeGroup.Commit();
gridItem.Services.Selection.SetSelectedComponents(new DesignItem[] { newColumnDefinition }, SelectionTypes.Auto); grid.UpdateLayout();
break; break;
} }
} }
} }
InvalidateVisual();
} }
void FixIndicesAfterSplit(int splitIndex, DependencyProperty idxProperty, DependencyProperty spanProperty) void FixIndicesAfterSplit(int splitIndex, DependencyProperty idxProperty, DependencyProperty spanProperty)
@ -373,8 +379,7 @@ namespace ICSharpCode.WpfDesign.Designer.Controls
newLength2 = new GridLength(oldLength.Value - newLength1.Value, oldLength.GridUnitType); newLength2 = new GridLength(oldLength.Value - newLength1.Value, oldLength.GridUnitType);
} }
#endregion #endregion
string GridLengthToText(GridLength len)
string GridLengthToText(GridLength len)
{ {
switch (len.GridUnitType) { switch (len.GridUnitType) {
case GridUnitType.Auto: case GridUnitType.Auto:
@ -454,7 +459,6 @@ namespace ICSharpCode.WpfDesign.Designer.Controls
e.Handled = true; e.Handled = true;
if (CaptureMouse()) { if (CaptureMouse()) {
Focus(); Focus();
gridItem.Services.Selection.SetSelectedComponents(new DesignItem[] { secondRow }, SelectionTypes.Auto);
mouseStartPos = GetCoordinate(e.GetPosition(grid)); mouseStartPos = GetCoordinate(e.GetPosition(grid));
mouseIsDown = true; mouseIsDown = true;
} }

134
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/GridUnitSelector.xaml.cs

@ -20,65 +20,77 @@ namespace ICSharpCode.WpfDesign.Designer.Controls
/// <summary> /// <summary>
/// Interaction logic for GridUnitSelector.xaml /// Interaction logic for GridUnitSelector.xaml
/// </summary> /// </summary>
public partial class GridUnitSelector : UserControl public partial class GridUnitSelector : UserControl
{ {
GridRailAdorner rail; GridRailAdorner rail;
public GridUnitSelector(GridRailAdorner rail) public GridUnitSelector(GridRailAdorner rail)
{ {
InitializeComponent(); InitializeComponent();
this.rail = rail; this.rail = rail;
} }
void FixedChecked(object sender, RoutedEventArgs e) void FixedChecked(object sender, RoutedEventArgs e)
{ {
this.rail.SetGridLengthUnit(Unit); this.rail.SetGridLengthUnit(Unit);
} }
void StarChecked(object sender, RoutedEventArgs e) void StarChecked(object sender, RoutedEventArgs e)
{ {
this.rail.SetGridLengthUnit(Unit); this.rail.SetGridLengthUnit(Unit);
} }
void AutoChecked(object sender, RoutedEventArgs e) void AutoChecked(object sender, RoutedEventArgs e)
{ {
this.rail.SetGridLengthUnit(Unit); this.rail.SetGridLengthUnit(Unit);
} }
public static readonly DependencyProperty OrientationProperty = public static readonly DependencyProperty OrientationProperty =
DependencyProperty.Register("Orientation", typeof(Orientation), typeof(GridUnitSelector), DependencyProperty.Register("Orientation", typeof(Orientation), typeof(GridUnitSelector),
new FrameworkPropertyMetadata()); new FrameworkPropertyMetadata());
public Orientation Orientation { public Orientation Orientation
get { return (Orientation)GetValue(OrientationProperty); } {
set { SetValue(OrientationProperty, value); } get { return (Orientation)GetValue(OrientationProperty); }
} set { SetValue(OrientationProperty, value); }
}
public DesignItem SelectedItem { get; set; }
public DesignItem SelectedItem { get; set; }
public GridUnitType Unit {
get { public GridUnitType Unit
if (auto.IsChecked == true) {
return GridUnitType.Auto; get
if (star.IsChecked == true) {
return GridUnitType.Star; if (auto.IsChecked == true)
return GridUnitType.Auto;
return GridUnitType.Pixel; if (star.IsChecked == true)
} return GridUnitType.Star;
set {
switch (value) { return GridUnitType.Pixel;
case GridUnitType.Auto: }
auto.IsChecked = true; set
break; {
case GridUnitType.Star: switch (value)
star.IsChecked = true; {
break; case GridUnitType.Auto:
default: auto.IsChecked = true;
@fixed.IsChecked = true; break;
break; case GridUnitType.Star:
} star.IsChecked = true;
} break;
} default:
} @fixed.IsChecked = true;
break;
}
}
}
protected override void OnMouseLeave(MouseEventArgs e)
{
base.OnMouseLeave(e);
this.Visibility = Visibility.Hidden;
}
}
} }

10
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/GridAdornerProvider.cs

@ -73,21 +73,13 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
CreateSplitter(); CreateSplitter();
this.ExtendedItem.PropertyChanged += OnPropertyChanged; this.ExtendedItem.PropertyChanged += OnPropertyChanged;
this.ExtendedItem.Services.Selection.SelectionChanged += GridAdornerProviderSelectionChanged;
base.OnInitialized(); base.OnInitialized();
} }
void GridAdornerProviderSelectionChanged(object sender, DesignItemCollectionEventArgs e)
{
leftBar.SelectionChanged();
topBar.SelectionChanged();
}
protected override void OnRemove() protected override void OnRemove()
{ {
this.ExtendedItem.PropertyChanged -= OnPropertyChanged; this.ExtendedItem.PropertyChanged -= OnPropertyChanged;
this.ExtendedItem.Services.Selection.SelectionChanged -= GridAdornerProviderSelectionChanged;
base.OnRemove(); base.OnRemove();
} }

Loading…
Cancel
Save