@@ -47,7 +47,7 @@ protected override void OnNavigatedTo(NavigationEventArgs eventArgs)
4747 {
4848 base . OnNavigatedTo ( eventArgs ) ;
4949
50- ColumnParams = eventArgs . Parameter as ColumnParam ;
50+ ColumnParams = eventArgs ? . Parameter as ColumnParam ;
5151 if ( ColumnParams ? . IsLayoutSwitch ?? false )
5252 FilesystemViewModel_DirectoryInfoUpdated ( this , EventArgs . Empty ) ;
5353 }
@@ -59,32 +59,44 @@ protected override void ShellPage_NavigationRequested(object sender, PathNavigat
5959
6060 protected override void OnNavigationParamsChanged ( )
6161 {
62+ // Add null check for ColumnParams
63+ if ( ColumnParams == null )
64+ return ;
65+
6266 if ( ColumnParams . NavPathParam is not null )
6367 // This method call is required to load the sorting preferences.
64- InstanceViewModel . FolderSettings . GetLayoutType ( ColumnParams . NavPathParam ) ;
68+ InstanceViewModel ? . FolderSettings ? . GetLayoutType ( ColumnParams . NavPathParam ) ;
6569
66- ItemDisplayFrame . Navigate (
67- typeof ( ColumnLayoutPage ) ,
68- new NavigationArguments ( )
69- {
70- IsSearchResultPage = ColumnParams . IsSearchResultPage ,
71- SearchQuery = ColumnParams . SearchQuery ,
72- NavPathParam = ColumnParams . NavPathParam ,
73- SearchPathParam = ColumnParams . SearchPathParam ,
74- AssociatedTabInstance = this ,
75- SelectItems = ColumnParams . SelectItems
76- } ) ;
70+ // Add null check for ItemDisplayFrame
71+ if ( ItemDisplayFrame != null )
72+ {
73+ ItemDisplayFrame . Navigate (
74+ typeof ( ColumnLayoutPage ) ,
75+ new NavigationArguments ( )
76+ {
77+ IsSearchResultPage = ColumnParams . IsSearchResultPage ,
78+ SearchQuery = ColumnParams . SearchQuery ,
79+ NavPathParam = ColumnParams . NavPathParam ,
80+ SearchPathParam = ColumnParams . SearchPathParam ,
81+ AssociatedTabInstance = this ,
82+ SelectItems = ColumnParams . SelectItems
83+ } ) ;
84+ }
7785 }
7886
7987 protected override void Page_Loaded ( object sender , RoutedEventArgs e )
8088 {
81- ShellViewModel = new ShellViewModel ( InstanceViewModel ? . FolderSettings ) ;
82- ShellViewModel . WorkingDirectoryModified += ViewModel_WorkingDirectoryModified ;
83- ShellViewModel . ItemLoadStatusChanged += FilesystemViewModel_ItemLoadStatusChanged ;
84- ShellViewModel . DirectoryInfoUpdated += FilesystemViewModel_DirectoryInfoUpdated ;
85- ShellViewModel . PageTypeUpdated += FilesystemViewModel_PageTypeUpdated ;
86- ShellViewModel . OnSelectionRequestedEvent += FilesystemViewModel_OnSelectionRequestedEvent ;
87- ShellViewModel . GitDirectoryUpdated += FilesystemViewModel_GitDirectoryUpdated ;
89+ // Add null check for InstanceViewModel
90+ if ( InstanceViewModel ? . FolderSettings != null )
91+ {
92+ ShellViewModel = new ShellViewModel ( InstanceViewModel . FolderSettings ) ;
93+ ShellViewModel . WorkingDirectoryModified += ViewModel_WorkingDirectoryModified ;
94+ ShellViewModel . ItemLoadStatusChanged += FilesystemViewModel_ItemLoadStatusChanged ;
95+ ShellViewModel . DirectoryInfoUpdated += FilesystemViewModel_DirectoryInfoUpdated ;
96+ ShellViewModel . PageTypeUpdated += FilesystemViewModel_PageTypeUpdated ;
97+ ShellViewModel . OnSelectionRequestedEvent += FilesystemViewModel_OnSelectionRequestedEvent ;
98+ ShellViewModel . GitDirectoryUpdated += FilesystemViewModel_GitDirectoryUpdated ;
99+ }
88100
89101 PaneHolder = this . FindAscendant < ColumnsLayoutPage > ( ) ? . ParentShellPageInstance ? . PaneHolder ;
90102
@@ -95,16 +107,23 @@ protected override void Page_Loaded(object sender, RoutedEventArgs e)
95107
96108 private void Page_Unloaded ( object sender , RoutedEventArgs e )
97109 {
98- ShellViewModel . WorkingDirectoryModified -= ViewModel_WorkingDirectoryModified ;
99- ShellViewModel . ItemLoadStatusChanged -= FilesystemViewModel_ItemLoadStatusChanged ;
100- ShellViewModel . DirectoryInfoUpdated -= FilesystemViewModel_DirectoryInfoUpdated ;
101- ShellViewModel . PageTypeUpdated -= FilesystemViewModel_PageTypeUpdated ;
102- ShellViewModel . OnSelectionRequestedEvent -= FilesystemViewModel_OnSelectionRequestedEvent ;
103- ShellViewModel . GitDirectoryUpdated -= FilesystemViewModel_GitDirectoryUpdated ;
110+ // Add null check for ShellViewModel before unsubscribing
111+ if ( ShellViewModel != null )
112+ {
113+ ShellViewModel . WorkingDirectoryModified -= ViewModel_WorkingDirectoryModified ;
114+ ShellViewModel . ItemLoadStatusChanged -= FilesystemViewModel_ItemLoadStatusChanged ;
115+ ShellViewModel . DirectoryInfoUpdated -= FilesystemViewModel_DirectoryInfoUpdated ;
116+ ShellViewModel . PageTypeUpdated -= FilesystemViewModel_PageTypeUpdated ;
117+ ShellViewModel . OnSelectionRequestedEvent -= FilesystemViewModel_OnSelectionRequestedEvent ;
118+ ShellViewModel . GitDirectoryUpdated -= FilesystemViewModel_GitDirectoryUpdated ;
119+ }
104120 }
105121
106122 protected override async void ViewModel_WorkingDirectoryModified ( object sender , WorkingDirectoryModifiedEventArgs e )
107123 {
124+ // Add null check for e and e.Path
125+ if ( e == null ) return ;
126+
108127 string value = e . Path ;
109128 if ( ! string . IsNullOrWhiteSpace ( value ) )
110129 await UpdatePathUIToWorkingDirectoryAsync ( value ) ;
@@ -114,48 +133,58 @@ private async void ItemDisplayFrame_Navigated(object sender, NavigationEventArgs
114133 {
115134 ContentPage = await GetContentOrNullAsync ( ) ;
116135
117- if ( ItemDisplayFrame . CurrentSourcePageType == typeof ( ColumnLayoutPage ) )
136+ if ( ItemDisplayFrame ? . CurrentSourcePageType == typeof ( ColumnLayoutPage ) )
118137 {
119138 // Reset DataGrid Rows that may be in "cut" command mode
120- ContentPage . ResetItemOpacity ( ) ;
139+ ContentPage ? . ResetItemOpacity ( ) ;
121140 }
122141
123- var parameters = e . Parameter as NavigationArguments ;
124- TabBarItemParameter = new TabBarItemParameter ( )
142+ var parameters = e ? . Parameter as NavigationArguments ;
143+ if ( parameters != null )
125144 {
126- InitialPageType = typeof ( ColumnShellPage ) ,
127- NavigationParameter = parameters . IsSearchResultPage ? parameters . SearchPathParam : parameters . NavPathParam
128- } ;
145+ TabBarItemParameter = new TabBarItemParameter ( )
146+ {
147+ InitialPageType = typeof ( ColumnShellPage ) ,
148+ NavigationParameter = parameters . IsSearchResultPage ? parameters . SearchPathParam : parameters . NavPathParam
149+ } ;
150+ }
129151 }
130152
131153 public override void Back_Click ( )
132154 {
133- ToolbarViewModel . CanGoBack = false ;
134- if ( ItemDisplayFrame . CanGoBack )
155+ if ( ToolbarViewModel != null )
156+ ToolbarViewModel . CanGoBack = false ;
157+
158+ if ( ItemDisplayFrame ? . CanGoBack == true )
135159 base . Back_Click ( ) ;
136160 else
137- this . FindAscendant < ColumnsLayoutPage > ( ) . NavigateBack ( ) ;
161+ this . FindAscendant < ColumnsLayoutPage > ( ) ? . NavigateBack ( ) ;
138162 }
139163
140164 public override void Forward_Click ( )
141165 {
142- ToolbarViewModel . CanGoForward = false ;
143- if ( ItemDisplayFrame . CanGoForward )
166+ if ( ToolbarViewModel != null )
167+ ToolbarViewModel . CanGoForward = false ;
168+
169+ if ( ItemDisplayFrame ? . CanGoForward == true )
144170 base . Forward_Click ( ) ;
145171 else
146- this . FindAscendant < ColumnsLayoutPage > ( ) . NavigateForward ( ) ;
172+ this . FindAscendant < ColumnsLayoutPage > ( ) ? . NavigateForward ( ) ;
147173 }
148174
149175 public override void Up_Click ( )
150176 {
151- if ( ! ToolbarViewModel . CanNavigateToParent )
177+ if ( ToolbarViewModel ? . CanNavigateToParent != true )
152178 return ;
153179
154180 this . FindAscendant < ColumnsLayoutPage > ( ) ? . NavigateUp ( ) ;
155181 }
156182
157183 public override void NavigateToPath ( string navigationPath , Type sourcePageType , NavigationArguments navArgs = null )
158184 {
185+ if ( string . IsNullOrEmpty ( navigationPath ) )
186+ return ;
187+
159188 this . FindAscendant < ColumnsLayoutPage > ( ) ? . SetSelectedPathOrNavigate ( navigationPath , sourcePageType , navArgs ) ;
160189 }
161190
@@ -170,6 +199,9 @@ public override void NavigateToReleaseNotes()
170199 }
171200
172201 public override Task WhenIsCurrent ( )
173- => Task . WhenAll ( _IsCurrentInstanceTCS . Task , this . FindAscendant < ColumnsLayoutPage > ( ) ? . ParentShellPageInstance ? . WhenIsCurrent ( ) ?? Task . CompletedTask ) ;
202+ {
203+ var parentTask = this . FindAscendant < ColumnsLayoutPage > ( ) ? . ParentShellPageInstance ? . WhenIsCurrent ( ) ;
204+ return Task . WhenAll ( _IsCurrentInstanceTCS . Task , parentTask ?? Task . CompletedTask ) ;
205+ }
174206 }
175- }
207+ }
0 commit comments