File tree Expand file tree Collapse file tree 2 files changed +58
-3
lines changed Expand file tree Collapse file tree 2 files changed +58
-3
lines changed Original file line number Diff line number Diff line change 1+ using System ;
2+ using System . Windows ;
3+ using System . Windows . Controls ;
4+
5+ namespace IPConfig . Controls ;
6+
7+ /// <summary>
8+ /// <see href="https://stackoverflow.com/a/26543731/4380178">Deferred loading of XAML</see>
9+ /// </summary>
10+ public class DeferredContent : ContentPresenter
11+ {
12+ public static readonly DependencyProperty DeferredContentTemplateProperty =
13+ DependencyProperty . Register ( "DeferredContentTemplate" ,
14+ typeof ( DataTemplate ) , typeof ( DeferredContent ) , null ) ;
15+
16+ public DataTemplate DeferredContentTemplate
17+ {
18+ get => ( DataTemplate ) GetValue ( DeferredContentTemplateProperty ) ;
19+ set => SetValue ( DeferredContentTemplateProperty , value ) ;
20+ }
21+
22+ public event EventHandler < RoutedEventArgs > ? DeferredContentLoaded ;
23+
24+ public DeferredContent ( )
25+ {
26+ Loaded += HandleLoaded ;
27+ }
28+
29+ public void ShowDeferredContent ( )
30+ {
31+ if ( DeferredContentTemplate is not null )
32+ {
33+ Content = DeferredContentTemplate . LoadContent ( ) ;
34+ RaiseDeferredContentLoaded ( ) ;
35+ }
36+ }
37+
38+ private void HandleLoaded ( object sender , RoutedEventArgs e )
39+ {
40+ Loaded -= HandleLoaded ;
41+ Dispatcher . BeginInvoke ( ShowDeferredContent ) ;
42+ }
43+
44+ private void RaiseDeferredContentLoaded ( )
45+ {
46+ DeferredContentLoaded ? . Invoke ( this , new RoutedEventArgs ( ) ) ;
47+ }
48+ }
Original file line number Diff line number Diff line change 77 xmlns : hcd =" clr-namespace:HandyControl.Data;assembly=HandyControl"
88 xmlns : app =" clr-namespace:IPConfig"
99 xmlns : b =" clr-namespace:IPConfig.Behaviors"
10+ xmlns : c =" clr-namespace:IPConfig.Controls"
1011 xmlns : conv =" clr-namespace:IPConfig.Converters"
1112 xmlns : lang =" clr-namespace:IPConfig.Languages"
1213 xmlns : m =" clr-namespace:IPConfig.Models"
408409 </hc : ToggleBlock .UnCheckedContent>
409410
410411 <hc : ToggleBlock .CheckedContent>
411- <hc : TransitioningContentControl TransitionMode =" Right2Left" >
412- <v : NicConfigDetailView />
413- </hc : TransitioningContentControl >
412+ <c : DeferredContent >
413+ <c : DeferredContent .DeferredContentTemplate>
414+ <DataTemplate >
415+ <hc : TransitioningContentControl TransitionMode =" Right2Left" >
416+ <v : NicConfigDetailView />
417+ </hc : TransitioningContentControl >
418+ </DataTemplate >
419+ </c : DeferredContent .DeferredContentTemplate>
420+ </c : DeferredContent >
414421 </hc : ToggleBlock .CheckedContent>
415422 </hc : ToggleBlock >
416423 </Grid >
You can’t perform that action at this time.
0 commit comments