CanvasControl.cs 1.1 KB

1234567891011121314151617181920212223242526272829303132333435
  1. using System;
  2. using System.Windows;
  3. using System.Windows.Controls;
  4. namespace DeceiveBarcodeManagement.Control
  5. {
  6. public class CanvasControl : Canvas
  7. {
  8. protected override Size MeasureOverride(Size constraint)
  9. {
  10. Size size = new Size();
  11. foreach (UIElement element in Children)
  12. {
  13. double left = Canvas.GetLeft(element);
  14. double top = Canvas.GetTop(element);
  15. left = double.IsNaN(left) ? 0 : left;
  16. top = double.IsNaN(top) ? 0 : top;
  17. element.Measure(constraint);
  18. Size desiredSize = element.DesiredSize;
  19. if (!double.IsNaN(desiredSize.Width) && !double.IsNaN(desiredSize.Height))
  20. {
  21. size.Width = Math.Max(size.Width, left + desiredSize.Width);
  22. size.Height = Math.Max(size.Height, top + desiredSize.Height);
  23. }
  24. }
  25. size.Width += 10;
  26. size.Height += 10;
  27. base.InvalidateMeasure();
  28. return size;
  29. }
  30. }
  31. }