public void Should_Track_Bounds() { var target = new BoundsTracker(); var control = default(Rectangle); var tree = new Decorator { Padding = new Thickness(10), Content = new Decorator { Padding = new Thickness(5), Content = (control = new Rectangle { Width = 15, Height = 15, }), } }; tree.Measure(Size.Infinity); tree.Arrange(new Rect(0, 0, 100, 100)); var track = target.Track(control, tree); var results = new List<TransformedBounds>(); track.Subscribe(results.Add); Assert.Equal(new Rect(15, 15, 15, 15), results.Last().Bounds); tree.Padding = new Thickness(15); tree.Measure(Size.Infinity); tree.Arrange(new Rect(0, 0, 100, 100), true); Assert.Equal(new Rect(20, 20, 15, 15), results.Last().Bounds); }
private void SelectedItemChanged(PerspexPropertyChangedEventArgs e) { var control = e.NewValue as IControl; if (control != null) { SelectionBoxItem = new Rectangle { Width = control.DesiredSize.Width, Height = control.DesiredSize.Height, Fill = new VisualBrush { Visual = control, Stretch = Stretch.None, AlignmentX = AlignmentX.Left, } }; } else { SelectionBoxItem = e.NewValue; } }
private void UpdateSelectionBoxItem(object item) { var contentControl = item as IContentControl; if (contentControl != null) { item = contentControl.Content; } var control = item as IControl; if (control != null) { control.Measure(Size.Infinity); SelectionBoxItem = new Rectangle { Width = control.DesiredSize.Width, Height = control.DesiredSize.Height, Fill = new VisualBrush { Visual = control, Stretch = Stretch.None, AlignmentX = AlignmentX.Left, } }; } else { SelectionBoxItem = item; } }