/// <summary> /// Gets or creates the <see cref="KeyedNavigationSource"/> with the default key. A <see cref="NavigationSourceContainer"/> is created if the <see cref="AllNavigationSources"/> collection does not contain the source name. /// </summary> /// <param name="sourceName">The source name</param> /// <returns>The navigation source</returns> public static NavigationSource CreateDefaultNavigationSource(string sourceName) { if (sourceName == null) { throw new ArgumentNullException(nameof(sourceName)); } if (allNavigationSources.TryGetValue(sourceName, out NavigationSourceContainer navigationSourceContainer)) { var navigationSource = navigationSourceContainer.NavigationSources.FirstOrDefault(n => n is KeyedNavigationSource && ((KeyedNavigationSource)n).Key == DefaultKeyedNavigationSourceKey); if (navigationSource != null) { throw new InvalidOperationException("The navigation source is already created"); } else { var defaultNavigationSource = new KeyedNavigationSource(DefaultKeyedNavigationSourceKey); navigationSourceContainer.Register(defaultNavigationSource); allNavigationSources[sourceName] = navigationSourceContainer; return(defaultNavigationSource); } } else { navigationSourceContainer = new NavigationSourceContainer(); var defaultNavigationSource = new KeyedNavigationSource(DefaultKeyedNavigationSourceKey); navigationSourceContainer.Register(defaultNavigationSource); allNavigationSources[sourceName] = navigationSourceContainer; return(defaultNavigationSource); } }
/// <summary> /// Creates the <see cref="NavigationSourceContainerCommands"/>. /// </summary> /// <param name="navigationSourceContainer">The navigation source container</param> public NavigationSourceContainerCommands(NavigationSourceContainer navigationSourceContainer) { if (navigationSourceContainer == null) { throw new ArgumentNullException(nameof(navigationSourceContainer)); } this.navigationSourceContainer = navigationSourceContainer; }
/// <summary> /// Creates the navigation sources container. /// </summary> /// <param name="sourceName">The source name</param> /// <returns>The navigation source container</returns> public static NavigationSourceContainer CreateNavigationSources(string sourceName) { if (allNavigationSources.ContainsKey(sourceName)) { throw new ArgumentException($"A container with the source name '{sourceName}' is already registered"); } var navigationSourceContainer = new NavigationSourceContainer(); allNavigationSources.Add(sourceName, navigationSourceContainer); return(navigationSourceContainer); }
/// <summary> /// Adds the <see cref="NavigationSource"/>. The <see cref="NavigationSourceContainer"/> is created if the <see cref="AllNavigationSources"/> does not contain the source name. /// </summary> /// <param name="sourceName">The source name</param> /// <param name="navigationSource">The navigation source</param> public static void AddNavigationSource(string sourceName, NavigationSource navigationSource) { if (sourceName == null) { throw new ArgumentNullException(nameof(sourceName)); } if (navigationSource == null) { throw new ArgumentNullException(nameof(navigationSource)); } if (allNavigationSources.TryGetValue(sourceName, out NavigationSourceContainer navigationSourceContainer)) { navigationSourceContainer.Register(navigationSource); } else { navigationSourceContainer = new NavigationSourceContainer(); navigationSourceContainer.Register(navigationSource); allNavigationSources[sourceName] = navigationSourceContainer; } }