private async void SortDown_Click_1(object sender, RoutedEventArgs e)
        {
            var scene = SceneGrid.SelectedItem as Scene;

            if (scene == null)
            {
                return;
            }
            var sceneWeAreReplacing = _sceneCollection.FirstOrDefault(s => s.SortOrder == scene.SortOrder + 1);

            if (sceneWeAreReplacing != null)
            {
                sceneWeAreReplacing.SortOrder--;
            }

            scene.SortOrder++;

            SortSceneGridBySortOrder();
            await NormalizeSortOrderAsync();

            SortSceneGridBySortOrder();

            SceneGrid.SelectedItem = scene;
            SceneGrid.Focus();
        }
        private async Task <bool> DeleteSelectedScene(Scene scene)
        {
            if (
                MessageBox.Show($"Are you sure you want to delete the '{scene.Name}' scene?",
                                "Are you sure?", MessageBoxButton.YesNo, MessageBoxImage.Question) != MessageBoxResult.Yes)
            {
                return(false);
            }
            if (scene.IsRunning)
            {
                ShowSceneEditWarning(scene.Name);
            }
            else
            {
                _context.Scenes.Local.Remove(scene);
            }

            var result = await _context.TrySaveChangesAsync(_app.Cts.Token);

            if (result.HasError)
            {
                await Log.ReportErrorFormatAsync(_app.Cts.Token, "Error deleting scene. {0}", result.Message);
            }

            SceneGrid.Focus();
            return(true);
        }
        private void UserControl_Loaded_1(object sender, RoutedEventArgs e)
        {
            if (SceneGrid.Items.Count > 0)
            {
                SceneGrid.SelectedIndex = 0;
            }

            SceneGrid.Focus();
        }
        private async void ButtonDuplicate_OnClick(object sender, RoutedEventArgs e)
        {
            var scene = SceneGrid.SelectedItem as Scene;

            if (scene == null)
            {
                return;
            }

            if (MessageBox.Show("Are you sure you want to duplicate this scene?",
                                "Are you sure?", MessageBoxButton.YesNo, MessageBoxImage.Question) != MessageBoxResult.Yes)
            {
                return;
            }

            var newScene = new Scene {
                Name = "Copy of " + scene.Name, SortOrder = SceneGrid.Items.Count + 1
            };

            foreach (var sc in scene.Commands)
            {
                newScene.Commands.Add(new SceneStoredCommand
                {
                    Argument         = sc.Argument,
                    Argument2        = sc.Argument2,
                    CommandId        = sc.CommandId,
                    Description      = sc.Description,
                    TargetObjectName = sc.TargetObjectName,
                    SortOrder        = sc.SortOrder
                });
                SceneGrid.Focus();
            }
            _context.Scenes.Local.Add(newScene);
            var result = await _context.TrySaveChangesAsync(_app.Cts.Token);

            if (result.HasError)
            {
                await Log.ReportErrorFormatAsync(_app.Cts.Token, "Error duplicating scene. {0}", result.Message);
            }
        }