13
13
namespace WEventViewer ;
14
14
15
15
internal record class OpenErrorLogWindow ( string message ) ;
16
- public partial class MainWindow : Window
16
+ internal partial class MainWindow : Window
17
17
{
18
18
DiagnosticListener _DS = new DiagnosticListener ( nameof ( MainWindow ) ) ;
19
- IServiceProvider ? serviceProvider ;
19
+ IViewModelFactory ? _viewModelFactory ;
20
20
public MainWindow ( ) : this ( null ) { }
21
- public MainWindow ( IServiceProvider ? serviceProvider )
21
+ public MainWindow ( IViewModelFactory ? viewModelFactory )
22
22
{
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 ;
25
25
InitializeComponent ( ) ;
26
26
WeakReferenceMessenger . Default . Register < MainWindow , OpenLogRequest > ( this , async ( recpient , req ) =>
27
27
{
28
- var vm = new OpenLogWindowViewModel ( ) ;
29
- var dlg = new OpenLogWindow ( )
28
+ var vm = _viewModelFactory ? . GetOpenLogWindowViewMode ( ) ;
29
+ if ( vm != null )
30
30
{
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
+ }
37
40
}
38
41
} ) ;
39
42
WeakReferenceMessenger . Default . Register < MainWindow , OpenErrorLogWindow > ( this , async ( mw , msg ) =>
40
43
{
41
- var vm = new ErrorWindowViewModel ( msg . message ) ;
44
+ var vm = _viewModelFactory ? . GetErrorViewWindowModel ( msg . message ) ;
42
45
var dlg = new ErrorWindow ( ) { DataContext = vm } ;
43
46
await dlg . ShowDialog ( mw ) ;
44
47
} ) ;
@@ -60,7 +63,7 @@ private void DataGrid_DoubleTapped_1(object? sender, Avalonia.Input.TappedEventA
60
63
{
61
64
if ( dataGrid . SelectedItem is LogRecord record )
62
65
{
63
- var vm = new DetailedLogViewModel ( record ) ;
66
+ var vm = _viewModelFactory ? . GetDetailedLogViewModel ( record ) ;
64
67
var w = new DetailedLogMessageWIndow ( )
65
68
{
66
69
DataContext = vm ,
@@ -73,9 +76,9 @@ private void DataGrid_DoubleTapped_1(object? sender, Avalonia.Input.TappedEventA
73
76
private void PrintProviderClick ( object ? sender , Avalonia . Interactivity . RoutedEventArgs e )
74
77
{
75
78
_DS . Write ( "OnPrintProviderClick" , new { e . Source , t = e . GetType ( ) } ) ;
76
- if ( serviceProvider != null )
79
+ if ( _viewModelFactory != null )
77
80
{
78
- var vm = serviceProvider . GetService < ProviderNameWindowViewModel > ( ) ;
81
+ var vm = _viewModelFactory . GetProviderNameWindowViewModel ( ) ;
79
82
var w = new ProviderNamesWindow ( ) { DataContext = vm } ;
80
83
w . Show ( ) ;
81
84
}
@@ -84,19 +87,19 @@ private void PrintProviderClick(object? sender, Avalonia.Interactivity.RoutedEve
84
87
85
88
private void PrintLogNamesClick ( object ? sender , RoutedEventArgs e )
86
89
{
87
- if ( serviceProvider != null )
90
+ if ( _viewModelFactory != null )
88
91
{
89
- var vm = serviceProvider . GetService < LogNameViewModel > ( ) ;
92
+ var vm = _viewModelFactory . GetLogNameViewModel ( ) ;
90
93
var w = new LogNameWindow ( ) { DataContext = vm } ;
91
94
w . Show ( ) ;
92
95
}
93
96
}
94
97
95
98
private void AboutClick ( object ? sender , RoutedEventArgs e )
96
99
{
97
- if ( serviceProvider != null )
100
+ if ( _viewModelFactory != null )
98
101
{
99
- var vm = serviceProvider . GetService < AboutViewModel > ( ) ;
102
+ var vm = _viewModelFactory . GetAboutViewModel ( ) ;
100
103
var w = new AboutWindow ( ) { DataContext = vm } ;
101
104
w . Show ( this ) ;
102
105
}
0 commit comments