private void HandleControllerPropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            switch (e.PropertyName)
            {
            case nameof(BasemapGalleryController.AvailableBasemaps):
                AvailableBasemaps = _controller.AvailableBasemaps;
                break;

            case nameof(BasemapGalleryController.IsLoading):
                _loadingScrim?.SetValue(View.IsVisibleProperty, _controller.IsLoading);
                break;

            case nameof(BasemapGalleryController.SelectedBasemap):
                SelectedBasemap = _controller.SelectedBasemap;
                _listView?.SetValue(CollectionView.SelectedItemProperty, _controller.SelectedBasemap);
                if (_controller.SelectedBasemap != null)
                {
                    BasemapSelected?.Invoke(this, _controller.SelectedBasemap);
                }

                break;
            }
        }
        private void HandleControllerPropertyChanged(object?sender, PropertyChangedEventArgs e)
        {
            switch (e.PropertyName)
            {
            case nameof(BasemapGalleryController.AvailableBasemaps):
                AvailableBasemaps = _controller.AvailableBasemaps;
                break;

            case nameof(BasemapGalleryController.IsLoading):
                _loadingScrim?.SetValue(FrameworkElement.VisibilityProperty, _controller.IsLoading ? Visibility.Visible : Visibility.Collapsed);
                break;

            case nameof(BasemapGalleryController.SelectedBasemap):
                ListView?.SetValue(ListView.SelectedItemProperty, _controller.SelectedBasemap);
                SelectedBasemap = _controller.SelectedBasemap;
                if (_controller.SelectedBasemap != null)
                {
                    BasemapSelected?.Invoke(this, _controller.SelectedBasemap);
                }

                break;
            }
        }