private void TvSkinProjectOnSelectedItemChanged(object sender, RoutedPropertyChangedEventArgs <object> e)
 {
     if (e.NewValue == null)
     {
         PgElement.SelectedObject = null;
     }
     else
     {
         var item = (TreeViewItemSkinElement)e.NewValue;
         if (item.SkinElement.GetType() == typeof(SkinWindow))
         {
             SkinController.SelectedWindow = (SkinWindow)item.SkinElement;
         }
         PgElement.SelectedObject = item.SkinElement.IsFolder ? null : item.SkinElement;
         SkinController.DrawElement(item);
     }
 }
        private void PgElementOnPropertyValueChanged(object sender, PropertyValueChangedEventArgs e)
        {
            var skinElement = (SkinElement)PgElement.SelectedObject;

            if (SkinController.SelectedWindow != null &&
                SkinController.SelectedWindow.ColorPositions.Any(t => t.MapColor == Core.MapColor2Color(SkinController.SelectedElement.SkinElement.MapColor)))
            {
                var pos = SkinController.SelectedWindow.ColorPositions.First(t => t.MapColor == Core.MapColor2Color(SkinController.SelectedElement.SkinElement.MapColor));
                switch (((PropertyItem)e.OriginalSource).DisplayName)
                {
                case "X": pos.X = (double)e.NewValue; break;

                case "Y": pos.Y = (double)e.NewValue; break;

                case "Width": pos.Width = (double)e.NewValue; break;

                case "Height": pos.Height = (double)e.NewValue; break;
                }
            }
            SkinController.DrawElement(skinElement);
        }