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:
Dev
2026-04-02 15:45:29 +02:00
parent 0984a36bc7
commit 1f2a49d7d3
3 changed files with 23 additions and 4 deletions

View File

@@ -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>();

View File

@@ -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 />

View File

@@ -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>();