public void CreateStartPages(Dictionary <Guid, IStoryboardPageContext> startPageContexts = null)
        {
            if (IsStartPagesCreated)
            {
                throw new InvalidOperationException("Start pages have been alread created");
            }

            Invoker.Invoke(() =>
            {
                foreach (var storyboard in Storyboards)
                {
                    var startPageInfo =
                        RegisteredPages.Keys.FirstOrDefault(x => x.IsStartPage && x.StoryboardId == storyboard.Key);
                    if (startPageInfo == null)
                    {
                        throw new InvalidOperationException(
                            $"Start page for storyboard {storyboard.Key} not registered");
                    }

                    var view = CreatePageView(startPageInfo);
                    storyboard.Value.ActivePage = view;
                    StartPagesOpenningStat[startPageInfo.PageUniqueId] = false;
                    IStoryboardPageContext context = null;
                    startPageContexts?.TryGetValue(startPageInfo.PageId, out context);
                    StartPageContexts[startPageInfo.PageUniqueId] = context;
                    PageContexts[startPageInfo.PageUniqueId]      = context;
                }

                IsStartPagesCreated = true;
            });
        }
        public IDeviceControllerConfigViewModel GetViewModel(Guid deviceId)
        {
            if (!_deviceModules.ContainsKey(deviceId))
            {
                throw new ArgumentException($"No device with id {deviceId}");
            }

            var module = _deviceModules[deviceId];

            return(_uiInvoker.Invoke(() => _container.GetInstance(module.DeviceControllerConfigViewModel) as IDeviceControllerConfigViewModel));
        }