feat(03-08): DI registration + MainWindow wiring for Search and Duplicates tabs
- App.xaml.cs: register ISearchService, SearchCsvExportService, SearchHtmlExportService, SearchViewModel, SearchView, IDuplicatesService, DuplicatesHtmlExportService, DuplicatesViewModel, DuplicatesView - MainWindow.xaml: add x:Name to SearchTabItem and DuplicatesTabItem (remove FeatureTabBase stubs) - MainWindow.xaml.cs: wire SearchTabItem.Content and DuplicatesTabItem.Content via DI
This commit is contained in:
@@ -95,6 +95,19 @@ public partial class App : Application
|
|||||||
services.AddTransient<StorageViewModel>();
|
services.AddTransient<StorageViewModel>();
|
||||||
services.AddTransient<StorageView>();
|
services.AddTransient<StorageView>();
|
||||||
|
|
||||||
|
// Phase 3: File Search
|
||||||
|
services.AddTransient<ISearchService, SearchService>();
|
||||||
|
services.AddTransient<SearchCsvExportService>();
|
||||||
|
services.AddTransient<SearchHtmlExportService>();
|
||||||
|
services.AddTransient<SearchViewModel>();
|
||||||
|
services.AddTransient<SearchView>();
|
||||||
|
|
||||||
|
// Phase 3: Duplicates
|
||||||
|
services.AddTransient<IDuplicatesService, DuplicatesService>();
|
||||||
|
services.AddTransient<DuplicatesHtmlExportService>();
|
||||||
|
services.AddTransient<DuplicatesViewModel>();
|
||||||
|
services.AddTransient<DuplicatesView>();
|
||||||
|
|
||||||
// Phase 2: Permissions
|
// Phase 2: Permissions
|
||||||
services.AddTransient<IPermissionsService, PermissionsService>();
|
services.AddTransient<IPermissionsService, PermissionsService>();
|
||||||
services.AddTransient<ISiteListService, SiteListService>();
|
services.AddTransient<ISiteListService, SiteListService>();
|
||||||
|
|||||||
@@ -47,11 +47,11 @@
|
|||||||
<TabItem x:Name="StorageTabItem"
|
<TabItem x:Name="StorageTabItem"
|
||||||
Header="{Binding Source={x:Static loc:TranslationSource.Instance}, Path=[tab.storage]}">
|
Header="{Binding Source={x:Static loc:TranslationSource.Instance}, Path=[tab.storage]}">
|
||||||
</TabItem>
|
</TabItem>
|
||||||
<TabItem Header="{Binding Source={x:Static loc:TranslationSource.Instance}, Path=[tab.search]}">
|
<TabItem x:Name="SearchTabItem"
|
||||||
<controls:FeatureTabBase />
|
Header="{Binding Source={x:Static loc:TranslationSource.Instance}, Path=[tab.search]}">
|
||||||
</TabItem>
|
</TabItem>
|
||||||
<TabItem Header="{Binding Source={x:Static loc:TranslationSource.Instance}, Path=[tab.duplicates]}">
|
<TabItem x:Name="DuplicatesTabItem"
|
||||||
<controls:FeatureTabBase />
|
Header="{Binding Source={x:Static loc:TranslationSource.Instance}, Path=[tab.duplicates]}">
|
||||||
</TabItem>
|
</TabItem>
|
||||||
<TabItem Header="{Binding Source={x:Static loc:TranslationSource.Instance}, Path=[tab.templates]}">
|
<TabItem Header="{Binding Source={x:Static loc:TranslationSource.Instance}, Path=[tab.templates]}">
|
||||||
<controls:FeatureTabBase />
|
<controls:FeatureTabBase />
|
||||||
|
|||||||
@@ -26,6 +26,12 @@ public partial class MainWindow : Window
|
|||||||
// Replace Storage tab placeholder with the DI-resolved StorageView
|
// Replace Storage tab placeholder with the DI-resolved StorageView
|
||||||
StorageTabItem.Content = serviceProvider.GetRequiredService<StorageView>();
|
StorageTabItem.Content = serviceProvider.GetRequiredService<StorageView>();
|
||||||
|
|
||||||
|
// Replace Search tab placeholder with the DI-resolved SearchView
|
||||||
|
SearchTabItem.Content = serviceProvider.GetRequiredService<SearchView>();
|
||||||
|
|
||||||
|
// Replace Duplicates tab placeholder with the DI-resolved DuplicatesView
|
||||||
|
DuplicatesTabItem.Content = serviceProvider.GetRequiredService<DuplicatesView>();
|
||||||
|
|
||||||
// Replace Settings tab placeholder with the DI-resolved SettingsView
|
// Replace Settings tab placeholder with the DI-resolved SettingsView
|
||||||
SettingsTabItem.Content = serviceProvider.GetRequiredService<SettingsView>();
|
SettingsTabItem.Content = serviceProvider.GetRequiredService<SettingsView>();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user