private void OnCollisionTypeChanged(object sender, SelectionChangedEventArgs e)
 {
     if (SelectedObj != null && SelectedObj.Type != collisionTypeBox.SelectedIndex)
     {
         var op = new ModifyPropertyOperation(ApplicationSettings.Instance.ActiveProject, SelectedObj, nameof(Data.Article.Type), SelectedObj.Type, collisionTypeBox.SelectedIndex);
         ApplicationSettings.Instance.ActiveProject.ExecuteOp(op);
     }
 }
 private void OnStaticChanged(object sender, RoutedEventArgs e)
 {
     if (SelectedObj is Terrain terrain)
     {
         if (terrain.Static != (staticBox.IsChecked ?? false))
         {
             var op = new ModifyPropertyOperation(ApplicationSettings.Instance.ActiveProject, SelectedObj, nameof(Terrain.Static), !(staticBox.IsChecked ?? false), staticBox.IsChecked ?? false);
             ApplicationSettings.Instance.ActiveProject.ExecuteOp(op);
         }
     }
 }
 private void OnSpriteNameChanged(object sender, RoutedEventArgs e)
 {
     if (SelectedObj != null)
     {
         var window = new SpriteSelectionWindow();
         var obj    = SelectedObj;
         window.Sprite  = SelectedObj.Sprite;
         window.Closed += (s, args) =>
         {
             if (obj != null && obj.Sprite != window.Sprite)
             {
                 var op = new ModifyPropertyOperation(ApplicationSettings.Instance.ActiveProject, obj, nameof(Data.Article.Sprite), SelectedObj.Sprite, window.Sprite);
                 ApplicationSettings.Instance.ActiveProject.ExecuteOp(op);
                 Article.NoInvoke = true;
                 Article.Sprite   = window.Sprite;
                 Article.NoInvoke = false;
             }
         };
         window.Owner = App.Current.MainWindow;
         window.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterOwner;
         window.Show();
     }
 }
        private void Article_PropertyChangedValue(object oldValue, object newValue, string property)
        {
            var op = new ModifyPropertyOperation(ApplicationSettings.Instance.ActiveProject, SelectedObj, property, oldValue, newValue);

            ApplicationSettings.Instance.ActiveProject.ExecuteOp(op);
        }