@@ -162,9 +162,10 @@ public override void Dispose()
162162 {
163163 base . Dispose ( ) ;
164164
165- var columnHostItems = ColumnHost . Items . OfType < BladeItem > ( ) . Select ( blade => blade . Content as Frame ) ;
165+ var columnHostItems = ColumnHost . Items . OfType < BladeItem > ( ) . Select ( blade => blade . Content as Frame ) . ToList ( ) ;
166166 foreach ( var frame in columnHostItems )
167167 {
168+ // Unsubscribe all event handlers BEFORE disposing to prevent race conditions
168169 if ( frame ? . Content is ColumnShellPage shPage )
169170 {
170171 shPage . ContentChanged -= ColumnViewBrowser_ContentChanged ;
@@ -179,6 +180,7 @@ public override void Dispose()
179180 if ( frame ? . Content is UIElement element )
180181 element . GotFocus -= ColumnViewBrowser_GotFocus ;
181182
183+ // Dispose content AFTER unsubscribing all event handlers
182184 if ( frame ? . Content is IDisposable disposable )
183185 disposable . Dispose ( ) ;
184186 }
@@ -207,9 +209,7 @@ public void DismissOtherBlades(int index)
207209 {
208210 var frame = ColumnHost . ActiveBlades [ index + 1 ] . Content as Frame ;
209211
210- if ( frame ? . Content is IDisposable disposableContent )
211- disposableContent . Dispose ( ) ;
212-
212+ // Unsubscribe event handlers BEFORE disposing to prevent race conditions
213213 if ( ( frame ? . Content as ColumnShellPage ) ? . SlimContentPage is ColumnLayoutPage columnLayout )
214214 {
215215 columnLayout . ItemInvoked -= ColumnViewBase_ItemInvoked ;
@@ -220,6 +220,10 @@ public void DismissOtherBlades(int index)
220220 ( frame ? . Content as UIElement ) . GotFocus -= ColumnViewBrowser_GotFocus ;
221221 ( frame ? . Content as ColumnShellPage ) . ContentChanged -= ColumnViewBrowser_ContentChanged ;
222222
223+ // Dispose content AFTER unsubscribing event handlers
224+ if ( frame ? . Content is IDisposable disposableContent )
225+ disposableContent . Dispose ( ) ;
226+
223227 ColumnHost . Items . RemoveAt ( index + 1 ) ;
224228 ColumnHost . ActiveBlades . RemoveAt ( index + 1 ) ;
225229 }
0 commit comments