public T GetDataContext <T>(string sceneName)
        {
            sceneName.ThrowIfNullOrEmpty(nameof(sceneName));

            SceneItem sceneItem = GetSceneItem(sceneName);

            if (!(sceneItem.Content.DataContext is T control))
            {
                throw new ArgumentException(
                          $"Content of scene with name \"{sceneName}\" is not convertable to " +
                          $"{typeof(T).FullName}.",
                          nameof(sceneName)
                          );
            }

            return(control);
        }
        public void AddScene(string sceneName, UserControl content)
        {
            sceneName.ThrowIfNullOrEmpty(nameof(sceneName));
            content.ThrowIfNull(nameof(content));

            if (Contains(sceneName))
            {
                throw new ArgumentException(
                          $"Scene with name \"{sceneName}\" has already been added to the scene " +
                          $"collection.",
                          nameof(sceneName)
                          );
            }

            var newScene = new SceneItem(sceneName, content);

            _sceneItems.Add(newScene);
        }