@@ -46,6 +46,16 @@ protected override void Dispose(bool disposing)
46
46
_footerViewFormsElement . MeasureInvalidated -= OnFormsElementMeasureInvalidated ;
47
47
}
48
48
49
+ if ( _headerUIView is MauiView hv )
50
+ {
51
+ hv . LayoutChanged -= HeaderView_LayoutChanged ;
52
+ }
53
+
54
+ if ( _footerUIView is MauiView fv )
55
+ {
56
+ fv . LayoutChanged -= FooterView_LayoutChanged ;
57
+ }
58
+
49
59
_headerUIView = null ;
50
60
_headerViewFormsElement = null ;
51
61
_footerUIView = null ;
@@ -105,15 +115,26 @@ internal void UpdateFooterView()
105
115
UpdateSubview ( ItemsView ? . Footer , ItemsView ? . FooterTemplate , FooterTag ,
106
116
ref _footerUIView , ref _footerViewFormsElement ) ;
107
117
UpdateHeaderFooterPosition ( ) ;
118
+
119
+ if ( _footerUIView is MauiView mv )
120
+ {
121
+ mv . LayoutChanged += FooterView_LayoutChanged ;
122
+ }
108
123
}
109
124
110
125
internal void UpdateHeaderView ( )
111
126
{
112
127
UpdateSubview ( ItemsView ? . Header , ItemsView ? . HeaderTemplate , HeaderTag ,
113
128
ref _headerUIView , ref _headerViewFormsElement ) ;
114
129
UpdateHeaderFooterPosition ( ) ;
130
+
131
+ if ( _headerUIView is MauiView mv )
132
+ {
133
+ mv . LayoutChanged += HeaderView_LayoutChanged ;
134
+ }
115
135
}
116
136
137
+
117
138
internal void UpdateSubview ( object view , DataTemplate viewTemplate , nint viewTag , ref UIView uiView , ref VisualElement formsElement )
118
139
{
119
140
uiView ? . RemoveFromSuperview ( ) ;
@@ -239,5 +260,15 @@ internal void UpdateLayoutMeasurements()
239
260
if ( _footerViewFormsElement != null )
240
261
HandleFormsElementMeasureInvalidated ( _footerViewFormsElement ) ;
241
262
}
263
+
264
+ private void HeaderView_LayoutChanged ( object sender , EventArgs e )
265
+ {
266
+ HandleFormsElementMeasureInvalidated ( _headerViewFormsElement ) ;
267
+ }
268
+
269
+ private void FooterView_LayoutChanged ( object sender , EventArgs e )
270
+ {
271
+ HandleFormsElementMeasureInvalidated ( _footerViewFormsElement ) ;
272
+ }
242
273
}
243
274
}
0 commit comments