@@ -56,20 +56,19 @@ protected override Size MeasureOverride(Size availableSize)
5656 {
5757 var maxSize = new Size ( ) ;
5858
59- foreach ( UIElement child in Children )
59+ var layoutChildren = Children . Cast < UIElement > ( ) . Where ( child => child != null && child . Visibility != Visibility . Collapsed ) . ToList ( ) ;
60+
61+ foreach ( var child in layoutChildren )
6062 {
61- if ( child != null )
62- {
63- child . Measure ( availableSize ) ;
64- maxSize . Width = Math . Max ( maxSize . Width , child . DesiredSize . Width ) ;
65- maxSize . Height = Math . Max ( maxSize . Height , child . DesiredSize . Height ) ;
66- }
63+ child . Measure ( availableSize ) ;
64+ maxSize . Width = Math . Max ( maxSize . Width , child . DesiredSize . Width ) ;
65+ maxSize . Height = Math . Max ( maxSize . Height , child . DesiredSize . Height ) ;
6766 }
6867
6968 _unitLength = Math . Max ( maxSize . Width , maxSize . Height ) / 2 ;
7069
71- var xCount = GetXCount ( Children . Count ) ;
72- var yCount = GetYCount ( Children . Count ) ;
70+ var xCount = GetXCount ( layoutChildren . Count ) ;
71+ var yCount = GetYCount ( layoutChildren . Count ) ;
7372
7473 var availableWidth = xCount * _unitLength ;
7574 var availableHeight = yCount * Math . Pow ( 3 , 0.5 ) * _unitLength + _unitLength * 2 ;
@@ -85,6 +84,7 @@ protected override Size ArrangeOverride(Size finalSize)
8584
8685 foreach ( UIElement child in Children )
8786 {
87+ if ( child == null || child . Visibility == Visibility . Collapsed ) continue ;
8888 child . Arrange ( _stuffer . Move ( ) ) ;
8989 }
9090
0 commit comments