1313namespace WEventViewer ;
1414
1515internal record class OpenErrorLogWindow ( string message ) ;
16- public partial class MainWindow : Window
16+ internal partial class MainWindow : Window
1717{
1818 DiagnosticListener _DS = new DiagnosticListener ( nameof ( MainWindow ) ) ;
19- IServiceProvider ? serviceProvider ;
19+ IViewModelFactory ? _viewModelFactory ;
2020 public MainWindow ( ) : this ( null ) { }
21- public MainWindow ( IServiceProvider ? serviceProvider )
21+ public MainWindow ( IViewModelFactory ? viewModelFactory )
2222 {
23- DataContext = serviceProvider != null ? serviceProvider . GetService < MainWindowViewModel > ( ) : new MainWindowViewModel ( ) ;
24- this . serviceProvider = serviceProvider ;
23+ DataContext = viewModelFactory != null ? viewModelFactory . GetMainWindowViewModel ( ) : new MainWindowViewModel ( new EventLogRepository ( ) , new StubViewModelFactory ( ) ) ;
24+ this . _viewModelFactory = viewModelFactory ;
2525 InitializeComponent ( ) ;
2626 WeakReferenceMessenger . Default . Register < MainWindow , OpenLogRequest > ( this , async ( recpient , req ) =>
2727 {
28- var vm = new OpenLogWindowViewModel ( ) ;
29- var dlg = new OpenLogWindow ( )
28+ var vm = _viewModelFactory ? . GetOpenLogWindowViewMode ( ) ;
29+ if ( vm != null )
3030 {
31- DataContext = vm
32- } ;
33- var ret = await dlg . ShowDialog < bool > ( this ) ;
34- if ( ret && DataContext is MainWindowViewModel mwvm )
35- {
36- WeakReferenceMessenger . Default . Send < LoadLogMessage > ( new ( vm . LogName , vm . CurrentSelected . PathType , vm . QueryString ) ) ;
31+ var dlg = new OpenLogWindow ( )
32+ {
33+ DataContext = vm
34+ } ;
35+ var ret = await dlg . ShowDialog < bool > ( this ) ;
36+ if ( ret && DataContext is MainWindowViewModel mwvm )
37+ {
38+ WeakReferenceMessenger . Default . Send < LoadLogMessage > ( new ( vm . LogName , vm . CurrentSelected . PathType , vm . QueryString ) ) ;
39+ }
3740 }
3841 } ) ;
3942 WeakReferenceMessenger . Default . Register < MainWindow , OpenErrorLogWindow > ( this , async ( mw , msg ) =>
4043 {
41- var vm = new ErrorWindowViewModel ( msg . message ) ;
44+ var vm = _viewModelFactory ? . GetErrorViewWindowModel ( msg . message ) ;
4245 var dlg = new ErrorWindow ( ) { DataContext = vm } ;
4346 await dlg . ShowDialog ( mw ) ;
4447 } ) ;
@@ -60,7 +63,7 @@ private void DataGrid_DoubleTapped_1(object? sender, Avalonia.Input.TappedEventA
6063 {
6164 if ( dataGrid . SelectedItem is LogRecord record )
6265 {
63- var vm = new DetailedLogViewModel ( record ) ;
66+ var vm = _viewModelFactory ? . GetDetailedLogViewModel ( record ) ;
6467 var w = new DetailedLogMessageWIndow ( )
6568 {
6669 DataContext = vm ,
@@ -73,9 +76,9 @@ private void DataGrid_DoubleTapped_1(object? sender, Avalonia.Input.TappedEventA
7376 private void PrintProviderClick ( object ? sender , Avalonia . Interactivity . RoutedEventArgs e )
7477 {
7578 _DS . Write ( "OnPrintProviderClick" , new { e . Source , t = e . GetType ( ) } ) ;
76- if ( serviceProvider != null )
79+ if ( _viewModelFactory != null )
7780 {
78- var vm = serviceProvider . GetService < ProviderNameWindowViewModel > ( ) ;
81+ var vm = _viewModelFactory . GetProviderNameWindowViewModel ( ) ;
7982 var w = new ProviderNamesWindow ( ) { DataContext = vm } ;
8083 w . Show ( ) ;
8184 }
@@ -84,19 +87,19 @@ private void PrintProviderClick(object? sender, Avalonia.Interactivity.RoutedEve
8487
8588 private void PrintLogNamesClick ( object ? sender , RoutedEventArgs e )
8689 {
87- if ( serviceProvider != null )
90+ if ( _viewModelFactory != null )
8891 {
89- var vm = serviceProvider . GetService < LogNameViewModel > ( ) ;
92+ var vm = _viewModelFactory . GetLogNameViewModel ( ) ;
9093 var w = new LogNameWindow ( ) { DataContext = vm } ;
9194 w . Show ( ) ;
9295 }
9396 }
9497
9598 private void AboutClick ( object ? sender , RoutedEventArgs e )
9699 {
97- if ( serviceProvider != null )
100+ if ( _viewModelFactory != null )
98101 {
99- var vm = serviceProvider . GetService < AboutViewModel > ( ) ;
102+ var vm = _viewModelFactory . GetAboutViewModel ( ) ;
100103 var w = new AboutWindow ( ) { DataContext = vm } ;
101104 w . Show ( this ) ;
102105 }
0 commit comments