From 975762dee44e295be96d12670db1c1726da5d2c2 Mon Sep 17 00:00:00 2001 From: Dev Date: Tue, 7 Apr 2026 12:49:41 +0200 Subject: [PATCH] feat(07-05): create UserAccessAuditView code-behind - UserControl with UserAccessAuditViewModel constructor injection, sets DataContext - Wires SearchResults.CollectionChanged to show/hide autocomplete ListBox - OnSearchResultClicked handler invokes AddUserCommand for mouse-based user selection --- .../Views/Tabs/UserAccessAuditView.xaml.cs | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 SharepointToolbox/Views/Tabs/UserAccessAuditView.xaml.cs diff --git a/SharepointToolbox/Views/Tabs/UserAccessAuditView.xaml.cs b/SharepointToolbox/Views/Tabs/UserAccessAuditView.xaml.cs new file mode 100644 index 0000000..058edc0 --- /dev/null +++ b/SharepointToolbox/Views/Tabs/UserAccessAuditView.xaml.cs @@ -0,0 +1,41 @@ +using System.Collections.Specialized; +using System.Windows; +using System.Windows.Controls; +using SharepointToolbox.ViewModels.Tabs; + +namespace SharepointToolbox.Views.Tabs; + +public partial class UserAccessAuditView : UserControl +{ + public UserAccessAuditView(UserAccessAuditViewModel viewModel) + { + InitializeComponent(); + DataContext = viewModel; + + // Show/hide the autocomplete list as SearchResults changes + viewModel.SearchResults.CollectionChanged += OnSearchResultsChanged; + } + + private void OnSearchResultsChanged(object? sender, NotifyCollectionChangedEventArgs e) + { + if (DataContext is UserAccessAuditViewModel vm) + { + SearchResultsList.Visibility = vm.SearchResults.Count > 0 + ? Visibility.Visible + : Visibility.Collapsed; + } + } + + /// + /// Handles click on a search result item in the autocomplete list. + /// Invokes AddUserCommand on the ViewModel and hides the list. + /// + private void OnSearchResultClicked(object sender, System.Windows.Input.MouseButtonEventArgs e) + { + if (sender is ListBoxItem item && DataContext is UserAccessAuditViewModel vm) + { + vm.AddUserCommand.Execute(item.DataContext); + // AddUserCommand clears SearchResults so CollectionChanged will hide the list + } + } +}