@@ -105,6 +105,74 @@ private void Window_StateChanged(object sender, EventArgs e)
105105
106106 #endregion
107107
108+ #region Control Events
109+
110+ private void MarkdownViewer_Loaded ( object sender , RoutedEventArgs e )
111+ {
112+ RefreshMarkdownViewer ( ) ;
113+ }
114+
115+ private void RefreshButton_Click ( object sender , RoutedEventArgs e )
116+ {
117+ RefreshButton . Visibility = Visibility . Collapsed ;
118+ RefreshProgressRing . Visibility = Visibility . Visible ;
119+ RefreshMarkdownViewer ( ) ;
120+ }
121+
122+ [ System . Diagnostics . CodeAnalysis . SuppressMessage ( "Usage" , "VSTHRD100:Avoid async void methods" , Justification = "<Pending>" ) ]
123+ private async void RefreshMarkdownViewer ( )
124+ {
125+ var output = await GetReleaseNotesMarkdownAsync ( ) . ConfigureAwait ( false ) ;
126+
127+ Application . Current . Dispatcher . Invoke ( ( ) =>
128+ {
129+ RefreshProgressRing . Visibility = Visibility . Collapsed ;
130+ if ( string . IsNullOrEmpty ( output ) )
131+ {
132+ RefreshButton . Visibility = Visibility . Visible ;
133+ MarkdownViewer . Visibility = Visibility . Collapsed ;
134+ }
135+ else
136+ {
137+ RefreshButton . Visibility = Visibility . Collapsed ;
138+ MarkdownViewer . Markdown = output ;
139+ MarkdownViewer . Visibility = Visibility . Visible ;
140+ }
141+ } ) ;
142+ }
143+
144+ private void Grid_SizeChanged ( object sender , SizeChangedEventArgs e )
145+ {
146+ MarkdownScrollViewer . Height = e . NewSize . Height ;
147+ MarkdownScrollViewer . Width = e . NewSize . Width ;
148+ }
149+
150+ private void MarkdownViewer_MouseWheel ( object sender , MouseWheelEventArgs e )
151+ {
152+ RaiseMouseWheelEvent ( sender , e ) ;
153+ }
154+
155+ private void MarkdownViewer_PreviewMouseWheel ( object sender , MouseWheelEventArgs e )
156+ {
157+ RaiseMouseWheelEvent ( sender , e ) ;
158+ }
159+
160+ private void RaiseMouseWheelEvent ( object sender , MouseWheelEventArgs e )
161+ {
162+ e . Handled = true ; // Prevent the inner control from handling the event
163+
164+ var eventArg = new MouseWheelEventArgs ( e . MouseDevice , e . Timestamp , e . Delta )
165+ {
166+ RoutedEvent = UIElement . MouseWheelEvent ,
167+ Source = sender
168+ } ;
169+
170+ // Raise the event on the parent ScrollViewer
171+ MarkdownScrollViewer . RaiseEvent ( eventArg ) ;
172+ }
173+
174+ #endregion
175+
108176 #region Release Notes
109177
110178 private static async Task < string > GetReleaseNotesMarkdownAsync ( )
@@ -180,73 +248,5 @@ private sealed class GitHubReleaseInfo
180248 private static partial Regex ImageUnitRegex ( ) ;
181249
182250 #endregion
183-
184- #region Control Events
185-
186- private void MarkdownViewer_Loaded ( object sender , RoutedEventArgs e )
187- {
188- RefreshMarkdownViewer ( ) ;
189- }
190-
191- private void RefreshButton_Click ( object sender , RoutedEventArgs e )
192- {
193- RefreshButton . Visibility = Visibility . Collapsed ;
194- RefreshProgressRing . Visibility = Visibility . Visible ;
195- RefreshMarkdownViewer ( ) ;
196- }
197-
198- [ System . Diagnostics . CodeAnalysis . SuppressMessage ( "Usage" , "VSTHRD100:Avoid async void methods" , Justification = "<Pending>" ) ]
199- private async void RefreshMarkdownViewer ( )
200- {
201- var output = await GetReleaseNotesMarkdownAsync ( ) . ConfigureAwait ( false ) ;
202-
203- Application . Current . Dispatcher . Invoke ( ( ) =>
204- {
205- RefreshProgressRing . Visibility = Visibility . Collapsed ;
206- if ( string . IsNullOrEmpty ( output ) )
207- {
208- RefreshButton . Visibility = Visibility . Visible ;
209- MarkdownViewer . Visibility = Visibility . Collapsed ;
210- }
211- else
212- {
213- RefreshButton . Visibility = Visibility . Collapsed ;
214- MarkdownViewer . Markdown = output ;
215- MarkdownViewer . Visibility = Visibility . Visible ;
216- }
217- } ) ;
218- }
219-
220- private void Grid_SizeChanged ( object sender , SizeChangedEventArgs e )
221- {
222- MarkdownScrollViewer . Height = e . NewSize . Height ;
223- MarkdownScrollViewer . Width = e . NewSize . Width ;
224- }
225-
226- private void MarkdownViewer_MouseWheel ( object sender , MouseWheelEventArgs e )
227- {
228- RaiseMouseWheelEvent ( sender , e ) ;
229- }
230-
231- private void MarkdownViewer_PreviewMouseWheel ( object sender , MouseWheelEventArgs e )
232- {
233- RaiseMouseWheelEvent ( sender , e ) ;
234- }
235-
236- private void RaiseMouseWheelEvent ( object sender , MouseWheelEventArgs e )
237- {
238- e . Handled = true ; // Prevent the inner control from handling the event
239-
240- var eventArg = new MouseWheelEventArgs ( e . MouseDevice , e . Timestamp , e . Delta )
241- {
242- RoutedEvent = UIElement . MouseWheelEvent ,
243- Source = sender
244- } ;
245-
246- // Raise the event on the parent ScrollViewer
247- MarkdownScrollViewer . RaiseEvent ( eventArg ) ;
248- }
249-
250- #endregion
251251 }
252252}
0 commit comments