using System; using System.Windows; using System.Windows.Controls; namespace DeceiveBarcodeManagement.Control { public class CanvasControl : Canvas { protected override Size MeasureOverride(Size constraint) { Size size = new Size(); foreach (UIElement element in Children) { double left = Canvas.GetLeft(element); double top = Canvas.GetTop(element); left = double.IsNaN(left) ? 0 : left; top = double.IsNaN(top) ? 0 : top; element.Measure(constraint); Size desiredSize = element.DesiredSize; if (!double.IsNaN(desiredSize.Width) && !double.IsNaN(desiredSize.Height)) { size.Width = Math.Max(size.Width, left + desiredSize.Width); size.Height = Math.Max(size.Height, top + desiredSize.Height); } } size.Width += 10; size.Height += 10; base.InvalidateMeasure(); return size; } } }