private void objectList_KeyDown(object sender, KeyEventArgs e)
 {
     if (e.Key == Key.Delete)
     {
         ObjectListElement o = SelectedElement;
         objectList.SelectionChanged -= objectList_SelectionChanged;
         if (o is Camera)
         {
             if (cameras.Count > 1)
             {
                 cameras.Remove(o as Camera);
                 objects.Remove(o);
                 selectedCamera = cameras[0];
             }
             return;
         }
         if (o is Light)
         {
             if (lights.Count > 1)
             {
                 lights.Remove(o as Light);
                 objects.Remove(o);
             }
             return;
         }
         Shapes.Remove(o as GeometryObject);
         objects.Remove(o);
         objectList.ItemsSource       = objects;
         objectList.SelectionChanged += objectList_SelectionChanged;
         Draw();
     }
 }
        private void objectList_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            panel.Children.Clear();
            SelectedElement = objects.First(o => o.Title.Equals(((ObjectListElement)objectList.SelectedItem).Title)); //objects.Find(o => o.Title.Equals(((ObjectListElement)objectList.SelectedItem).Title));
            string objectType = SelectedElement.Title.Split(' ')[0];

            switch (objectType)
            {
            case "Camera":
                CreateCameraPanel();
                selectedCamera = SelectedElement as Camera;
                colorArray     = new byte[arraySize];
                Draw();
                break;

            case "Light":
                CreateLightPanel();
                break;

            case "Cuboid":
                CreateCuboidPanel();
                break;

            case "Cone":
                CreateConePanel();
                break;
            }
        }