protected override void OnValueChanged(DependencyPropertyChangedEventArgs e)
 {
     if (!this.autoSettingValue)
     {
         if (e.NewValue is Color)
         {
             this.SelectedPaletteColor = null;
             this.Color = (Color)e.NewValue;
         }
         else if (this.Value is PaletteColor)
         {
             this.SelectedPaletteColor = (PaletteColor)this.Value;
         }
     }
 }
        public static Theme LoadTheme(XElement element)
        {
            try
            {
                var themeType = Type.GetType(element.Attribute("Type").Value);
                var theme     = Activator.CreateInstance(themeType) as Theme;

                var validProps = theme.GetType().GetFields(BindingFlags.Static | BindingFlags.Public | BindingFlags.FlattenHierarchy)
                                 .Where(fi => fi.FieldType == typeof(DependencyProperty))
                                 .Select(fi => (DependencyProperty)fi.GetValue(null))
                                 .Where(dp => !dp.ReadOnly)
                                 .ToDictionary(dp => dp.Name);
                var converters     = new Dictionary <Type, TypeConverter>();
                var paletteElement = element.Element("Palette");
                var palette        = new Dictionary <string, PaletteColor>();

                if (paletteElement != null)
                {
                    var colorConverter = TypeDescriptor.GetConverter(typeof(Color));

                    converters[typeof(Color)] = colorConverter;

                    foreach (var colorElement in paletteElement.Elements("PaletteColor"))
                    {
                        var paletteColor = new PaletteColor
                        {
                            Name  = colorElement.Attribute("Name").Value,
                            Color = (Color)colorConverter.ConvertFromString(null, CultureInfo.InvariantCulture, colorElement.Attribute("Color").Value)
                        };

                        palette[paletteColor.Name] = paletteColor;
                    }

                    // NOTE:  We add the palette entries after loading them all to remove any duplicates.
                    // If the user names palette colors the same, they'll work independently until saved.
                    // When loaded, they'll be unified.  Not awesome, but better than crashing.
                    theme.Palette.Clear();
                    foreach (var pc in palette.Values)
                    {
                        theme.Palette.Add(pc);
                    }
                }

                foreach (var propElement in element.Elements("Property"))
                {
                    var nameAttr  = propElement.Attribute("Name");
                    var valueAttr = propElement.Attribute("Value");

                    if (nameAttr != null)
                    {
                        DependencyProperty dp;
                        object             value;

                        if (validProps.TryGetValue(nameAttr.Value, out dp))
                        {
                            if (dp.PropertyType == typeof(Color) && valueAttr.Value.StartsWith("="))
                            {
                                PaletteColor paletteColor;

                                if (palette.TryGetValue(valueAttr.Value.Substring(1), out paletteColor))
                                {
                                    BindingOperations.SetBinding(theme, dp, new Binding {
                                        Source = paletteColor, Path = new PropertyPath(PaletteColor.ColorProperty)
                                    });
                                }
                            }
                            else
                            {
                                if (dp.PropertyType == typeof(string))
                                {
                                    value = valueAttr.Value;
                                }
                                else
                                {
                                    TypeConverter converter;

                                    if (!converters.TryGetValue(dp.PropertyType, out converter))
                                    {
                                        converter = TypeDescriptor.GetConverter(dp.PropertyType);
                                        converters[dp.PropertyType] = converter;
                                    }

                                    value = converter.ConvertFromString(valueAttr.Value);
                                }

                                theme.SetValue(dp, value);
                            }
                        }
                    }
                }

                return(theme);
            }
            catch (Exception)
            {
                return(Theme.Instance.ThemeCreator());
            }
        }
        void SetBindings()
        {
            var palette = this.Palette.ToDictionary(pc => pc.Name);

            if (!palette.ContainsKey("Black"))
            {
                var pc = new PaletteColor { Name = "Black", Color = Color.FromArgb(0xFF, 0x00, 0x00, 0x00) };
                palette["Black"] = pc;
                this.Palette.Add(pc);
            }

            if (!palette.ContainsKey("White"))
            {
                var pc = new PaletteColor { Name = "White", Color = Color.FromArgb(0xFF, 0xFF, 0xFF, 0xFF) };
                palette["White"] = pc;
                this.Palette.Add(pc);
            }

            if (!palette.ContainsKey("Gray"))
            {
                var pc = new PaletteColor { Name = "Gray", Color = Color.FromArgb(0xFF, 0x80, 0x80, 0x80) };
                palette["Gray"] = pc;
                this.Palette.Add(pc);
            }

            if (!palette.ContainsKey("MediumGray"))
            {
                var pc = new PaletteColor { Name = "MediumGray", Color = Color.FromArgb(0xFF, 0xB8, 0xB8, 0xB8) };
                palette["MediumGray"] = pc;
                this.Palette.Add(pc);
            }

            if (!palette.ContainsKey("LightGray"))
            {
                var pc = new PaletteColor { Name = "LightGray", Color = Color.FromArgb(0xFF, 0xD9, 0xD9, 0xD9) };
                palette["LightGray"] = pc;
                this.Palette.Add(pc);
            }

            if (!palette.ContainsKey("LighterGray"))
            {
                var pc = new PaletteColor { Name = "LighterGray", Color = Color.FromArgb(0xFF, 0xE5, 0xE5, 0xE5) };
                palette["LighterGray"] = pc;
                this.Palette.Add(pc);
            }

            if (!palette.ContainsKey("XboxGreen"))
            {
                var pc = new PaletteColor { Name = "XboxGreen", Color = Color.FromArgb(0xFF, 0x10, 0x7C, 0x0F) };
                palette["XboxGreen"] = pc;
                this.Palette.Add(pc);
            }

            if (!palette.ContainsKey("XboxGreenLight"))
            {
                var pc = new PaletteColor { Name = "XboxGreenLight", Color = Color.FromArgb(0xFF, 0xC4, 0xEE, 0xB3) };
                palette["XboxGreenLight"] = pc;
                this.Palette.Add(pc);
            }

            if (!palette.ContainsKey("XboxGreenMedium"))
            {
                var pc = new PaletteColor { Name = "XboxGreenMedium", Color = Color.FromArgb(0xFF, 0x3F, 0xAC, 0x30) };
                palette["XboxGreenMedium"] = pc;
                this.Palette.Add(pc);
            }

            if (!palette.ContainsKey("XboxGreenDark"))
            {
                var pc = new PaletteColor { Name = "XboxGreenDark", Color = Color.FromArgb(0xFF, 0x10, 0x66, 0x0F) };
                palette["XboxGreenDark"] = pc;
                this.Palette.Add(pc);
            }

            if (!palette.ContainsKey("Transparent"))
            {
                var pc = new PaletteColor { Name = "Transparent", Color = Color.FromArgb(0x00, 0xFF, 0xFF, 0xFF) };
                palette["Transparent"] = pc;
                this.Palette.Add(pc);
            }

            if (!palette.ContainsKey("TimelineSelection"))
            {
                var pc = new PaletteColor { Name = "TimelineSelection", Color = Color.FromArgb(0x86, 0xC4, 0xEE, 0xB3) };
                palette["TimelineSelection"] = pc;
                this.Palette.Add(pc);
            }

            this.BladePageHoverBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.BladePageHoverBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(BladePageHoverBackgroundColorProperty) });
            BindingOperations.SetBinding(this, BladePageHoverBackgroundColorProperty, new Binding { Source = palette["LightGray"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.BladePageHoverForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.BladePageHoverForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(BladePageHoverForegroundColorProperty) });
            BindingOperations.SetBinding(this, BladePageHoverForegroundColorProperty, new Binding { Source = palette["Black"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.ComboBoxDropdownBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.ComboBoxDropdownBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(ComboBoxDropdownBackgroundColorProperty) });
            BindingOperations.SetBinding(this, ComboBoxDropdownBackgroundColorProperty, new Binding { Source = palette["White"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.ComboBoxItemHighlightedBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.ComboBoxItemHighlightedBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(ComboBoxItemHighlightedBackgroundColorProperty) });
            BindingOperations.SetBinding(this, ComboBoxItemHighlightedBackgroundColorProperty, new Binding { Source = palette["XboxGreenLight"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.ComboBoxItemHighlightedForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.ComboBoxItemHighlightedForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(ComboBoxItemHighlightedForegroundColorProperty) });
            BindingOperations.SetBinding(this, ComboBoxItemHighlightedForegroundColorProperty, new Binding { Source = palette["Black"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.ComboBoxItemSelectedBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.ComboBoxItemSelectedBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(ComboBoxItemSelectedBackgroundColorProperty) });
            BindingOperations.SetBinding(this, ComboBoxItemSelectedBackgroundColorProperty, new Binding { Source = palette["XboxGreen"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.ComboBoxItemSelectedForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.ComboBoxItemSelectedForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(ComboBoxItemSelectedForegroundColorProperty) });
            BindingOperations.SetBinding(this, ComboBoxItemSelectedForegroundColorProperty, new Binding { Source = palette["White"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.ControlBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.ControlBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(ControlBackgroundColorProperty) });
            BindingOperations.SetBinding(this, ControlBackgroundColorProperty, new Binding { Source = palette["White"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.ControlBorderBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.ControlBorderBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(ControlBorderColorProperty) });
            BindingOperations.SetBinding(this, ControlBorderColorProperty, new Binding { Source = palette["Gray"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.ControlDisabledBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.ControlDisabledBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(ControlDisabledBackgroundColorProperty) });
            BindingOperations.SetBinding(this, ControlDisabledBackgroundColorProperty, new Binding { Source = palette["White"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.ControlDisabledBorderBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.ControlDisabledBorderBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(ControlDisabledBorderColorProperty) });
            BindingOperations.SetBinding(this, ControlDisabledBorderColorProperty, new Binding { Source = palette["LighterGray"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.ControlDisabledForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.ControlDisabledForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(ControlDisabledForegroundColorProperty) });
            BindingOperations.SetBinding(this, ControlDisabledForegroundColorProperty, new Binding { Source = palette["Gray"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.ControlFocusedBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.ControlFocusedBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(ControlFocusedBackgroundColorProperty) });
            BindingOperations.SetBinding(this, ControlFocusedBackgroundColorProperty, new Binding { Source = palette["White"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.ControlFocusedBorderBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.ControlFocusedBorderBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(ControlFocusedBorderColorProperty) });
            BindingOperations.SetBinding(this, ControlFocusedBorderColorProperty, new Binding { Source = palette["XboxGreen"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.ControlFocusedForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.ControlFocusedForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(ControlFocusedForegroundColorProperty) });
            BindingOperations.SetBinding(this, ControlFocusedForegroundColorProperty, new Binding { Source = palette["Black"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.ControlFocusedHoverBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.ControlFocusedHoverBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(ControlFocusedHoverBackgroundColorProperty) });
            BindingOperations.SetBinding(this, ControlFocusedHoverBackgroundColorProperty, new Binding { Source = palette["XboxGreenLight"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.ControlFocusedHoverBorderBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.ControlFocusedHoverBorderBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(ControlFocusedHoverBorderColorProperty) });
            BindingOperations.SetBinding(this, ControlFocusedHoverBorderColorProperty, new Binding { Source = palette["Black"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.ControlFocusedHoverForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.ControlFocusedHoverForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(ControlFocusedHoverForegroundColorProperty) });
            BindingOperations.SetBinding(this, ControlFocusedHoverForegroundColorProperty, new Binding { Source = palette["Black"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.ControlForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.ControlForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(ControlForegroundColorProperty) });
            BindingOperations.SetBinding(this, ControlForegroundColorProperty, new Binding { Source = palette["Black"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.ControlHoverBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.ControlHoverBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(ControlHoverBackgroundColorProperty) });
            BindingOperations.SetBinding(this, ControlHoverBackgroundColorProperty, new Binding { Source = palette["LightGray"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.ControlHoverBorderBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.ControlHoverBorderBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(ControlHoverBorderColorProperty) });
            BindingOperations.SetBinding(this, ControlHoverBorderColorProperty, new Binding { Source = palette["Black"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.ControlHoverForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.ControlHoverForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(ControlHoverForegroundColorProperty) });
            BindingOperations.SetBinding(this, ControlHoverForegroundColorProperty, new Binding { Source = palette["Black"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.ControlPressedBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.ControlPressedBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(ControlPressedBackgroundColorProperty) });
            BindingOperations.SetBinding(this, ControlPressedBackgroundColorProperty, new Binding { Source = palette["XboxGreen"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.ControlPressedBorderBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.ControlPressedBorderBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(ControlPressedBorderColorProperty) });
            BindingOperations.SetBinding(this, ControlPressedBorderColorProperty, new Binding { Source = palette["White"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.ControlPressedForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.ControlPressedForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(ControlPressedForegroundColorProperty) });
            BindingOperations.SetBinding(this, ControlPressedForegroundColorProperty, new Binding { Source = palette["White"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.DarkFocusVisualBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.DarkFocusVisualBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(DarkFocusVisualColorProperty) });
            BindingOperations.SetBinding(this, DarkFocusVisualColorProperty, new Binding { Source = palette["Black"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.LightFocusVisualBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.LightFocusVisualBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(LightFocusVisualColorProperty) });
            BindingOperations.SetBinding(this, LightFocusVisualColorProperty, new Binding { Source = palette["White"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.EventLaneFocusedBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.EventLaneFocusedBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(EventLaneFocusedBackgroundColorProperty) });
            BindingOperations.SetBinding(this, EventLaneFocusedBackgroundColorProperty, new Binding { Source = palette["White"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.EventLaneFocusedForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.EventLaneFocusedForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(EventLaneFocusedForegroundColorProperty) });
            BindingOperations.SetBinding(this, EventLaneFocusedForegroundColorProperty, new Binding { Source = palette["Black"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.EventLaneFocusedSelectionBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.EventLaneFocusedSelectionBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(EventLaneFocusedSelectionBackgroundColorProperty) });
            BindingOperations.SetBinding(this, EventLaneFocusedSelectionBackgroundColorProperty, new Binding { Source = palette["White"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.EventLaneFocusedSelectionForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.EventLaneFocusedSelectionForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(EventLaneFocusedSelectionForegroundColorProperty) });
            BindingOperations.SetBinding(this, EventLaneFocusedSelectionForegroundColorProperty, new Binding { Source = palette["Black"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.EventLaneSelectionBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.EventLaneSelectionBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(EventLaneSelectionBackgroundColorProperty) });
            BindingOperations.SetBinding(this, EventLaneSelectionBackgroundColorProperty, new Binding { Source = palette["White"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.EventLaneSelectionForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.EventLaneSelectionForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(EventLaneSelectionForegroundColorProperty) });
            BindingOperations.SetBinding(this, EventLaneSelectionForegroundColorProperty, new Binding { Source = palette["Black"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.Heading1ForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.Heading1ForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(Heading1ForegroundColorProperty) });
            BindingOperations.SetBinding(this, Heading1ForegroundColorProperty, new Binding { Source = palette["XboxGreen"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.Heading2ForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.Heading2ForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(Heading2ForegroundColorProperty) });
            BindingOperations.SetBinding(this, Heading2ForegroundColorProperty, new Binding { Source = palette["Black"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.GroupBoxHeaderBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.GroupBoxHeaderBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(GroupBoxHeaderBackgroundColorProperty) });
            BindingOperations.SetBinding(this, GroupBoxHeaderBackgroundColorProperty, new Binding { Source = palette["LighterGray"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.GroupBoxHeaderForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.GroupBoxHeaderForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(GroupBoxHeaderForegroundColorProperty) });
            BindingOperations.SetBinding(this, GroupBoxHeaderForegroundColorProperty, new Binding { Source = palette["XboxGreenDark"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.CloseFileButtonForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.CloseFileButtonForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(CloseFileButtonForegroundColorProperty) });
            BindingOperations.SetBinding(this, CloseFileButtonForegroundColorProperty, new Binding { Source = palette["White"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.CloseFileButtonHoverForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.CloseFileButtonHoverForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(CloseFileButtonHoverForegroundColorProperty) });
            BindingOperations.SetBinding(this, CloseFileButtonHoverForegroundColorProperty, new Binding { Source = palette["XboxGreenLight"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.FileButtonBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.FileButtonBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(FileButtonBackgroundColorProperty) });
            BindingOperations.SetBinding(this, FileButtonBackgroundColorProperty, new Binding { Source = palette["XboxGreen"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.FileButtonForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.FileButtonForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(FileButtonForegroundColorProperty) });
            BindingOperations.SetBinding(this, FileButtonForegroundColorProperty, new Binding { Source = palette["White"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.FileButtonHoverBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.FileButtonHoverBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(FileButtonHoverBackgroundColorProperty) });
            BindingOperations.SetBinding(this, FileButtonHoverBackgroundColorProperty, new Binding { Source = palette["XboxGreenMedium"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.FileButtonHoverForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.FileButtonHoverForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(FileButtonHoverForegroundColorProperty) });
            BindingOperations.SetBinding(this, FileButtonHoverForegroundColorProperty, new Binding { Source = palette["White"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.FileTabItemBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.FileTabItemBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(FileTabItemBackgroundColorProperty) });
            BindingOperations.SetBinding(this, FileTabItemBackgroundColorProperty, new Binding { Source = palette["XboxGreen"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.FileTabItemDisabledBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.FileTabItemDisabledBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(FileTabItemDisabledBackgroundColorProperty) });
            BindingOperations.SetBinding(this, FileTabItemDisabledBackgroundColorProperty, new Binding { Source = palette["XboxGreen"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.FileTabItemDisabledForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.FileTabItemDisabledForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(FileTabItemDisabledForegroundColorProperty) });
            BindingOperations.SetBinding(this, FileTabItemDisabledForegroundColorProperty, new Binding { Source = palette["XboxGreenLight"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.FileTabItemForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.FileTabItemForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(FileTabItemForegroundColorProperty) });
            BindingOperations.SetBinding(this, FileTabItemForegroundColorProperty, new Binding { Source = palette["White"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.FileTabItemHoverBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.FileTabItemHoverBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(FileTabItemHoverBackgroundColorProperty) });
            BindingOperations.SetBinding(this, FileTabItemHoverBackgroundColorProperty, new Binding { Source = palette["XboxGreenDark"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.FileTabItemHoverForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.FileTabItemHoverForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(FileTabItemHoverForegroundColorProperty) });
            BindingOperations.SetBinding(this, FileTabItemHoverForegroundColorProperty, new Binding { Source = palette["White"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.FileTabItemSelectedBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.FileTabItemSelectedBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(FileTabItemSelectedBackgroundColorProperty) });
            BindingOperations.SetBinding(this, FileTabItemSelectedBackgroundColorProperty, new Binding { Source = palette["XboxGreenMedium"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.FileTabItemSelectedForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.FileTabItemSelectedForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(FileTabItemSelectedForegroundColorProperty) });
            BindingOperations.SetBinding(this, FileTabItemSelectedForegroundColorProperty, new Binding { Source = palette["White"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.LayoutTabControlBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.LayoutTabControlBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(LayoutTabControlBackgroundColorProperty) });
            BindingOperations.SetBinding(this, LayoutTabControlBackgroundColorProperty, new Binding { Source = palette["LighterGray"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.LayoutTabItemBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.LayoutTabItemBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(LayoutTabItemBackgroundColorProperty) });
            BindingOperations.SetBinding(this, LayoutTabItemBackgroundColorProperty, new Binding { Source = palette["LightGray"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.LayoutTabItemBorderBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.LayoutTabItemBorderBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(LayoutTabItemBorderColorProperty) });
            BindingOperations.SetBinding(this, LayoutTabItemBorderColorProperty, new Binding { Source = palette["Gray"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.LayoutTabItemForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.LayoutTabItemForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(LayoutTabItemForegroundColorProperty) });
            BindingOperations.SetBinding(this, LayoutTabItemForegroundColorProperty, new Binding { Source = palette["Black"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.LayoutTabItemHoverBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.LayoutTabItemHoverBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(LayoutTabItemHoverBackgroundColorProperty) });
            BindingOperations.SetBinding(this, LayoutTabItemHoverBackgroundColorProperty, new Binding { Source = palette["Transparent"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.LayoutTabItemHoverForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.LayoutTabItemHoverForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(LayoutTabItemHoverForegroundColorProperty) });
            BindingOperations.SetBinding(this, LayoutTabItemHoverForegroundColorProperty, new Binding { Source = palette["XboxGreen"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.LayoutTabItemSelectedBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.LayoutTabItemSelectedBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(LayoutTabItemSelectedBackgroundColorProperty) });
            BindingOperations.SetBinding(this, LayoutTabItemSelectedBackgroundColorProperty, new Binding { Source = palette["LighterGray"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.LayoutTabItemSelectedForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.LayoutTabItemSelectedForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(LayoutTabItemSelectedForegroundColorProperty) });
            BindingOperations.SetBinding(this, LayoutTabItemSelectedForegroundColorProperty, new Binding { Source = palette["XboxGreen"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.OpenTabBorderBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.OpenTabBorderBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(OpenTabBorderColorProperty) });
            BindingOperations.SetBinding(this, OpenTabBorderColorProperty, new Binding { Source = palette["Gray"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.OpenTabItemBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.OpenTabItemBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(OpenTabItemBackgroundColorProperty) });
            BindingOperations.SetBinding(this, OpenTabItemBackgroundColorProperty, new Binding { Source = palette["Transparent"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.OpenTabItemForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.OpenTabItemForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(OpenTabItemForegroundColorProperty) });
            BindingOperations.SetBinding(this, OpenTabItemForegroundColorProperty, new Binding { Source = palette["Black"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.OpenTabItemHoverBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.OpenTabItemHoverBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(OpenTabItemHoverBackgroundColorProperty) });
            BindingOperations.SetBinding(this, OpenTabItemHoverBackgroundColorProperty, new Binding { Source = palette["XboxGreenLight"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.OpenTabItemHoverForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.OpenTabItemHoverForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(OpenTabItemHoverForegroundColorProperty) });
            BindingOperations.SetBinding(this, OpenTabItemHoverForegroundColorProperty, new Binding { Source = palette["Black"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.OpenTabItemSelectedBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.OpenTabItemSelectedBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(OpenTabItemSelectedBackgroundColorProperty) });
            BindingOperations.SetBinding(this, OpenTabItemSelectedBackgroundColorProperty, new Binding { Source = palette["XboxGreen"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.OpenTabItemSelectedForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.OpenTabItemSelectedForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(OpenTabItemSelectedForegroundColorProperty) });
            BindingOperations.SetBinding(this, OpenTabItemSelectedForegroundColorProperty, new Binding { Source = palette["White"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.ListBoxItemFocusedSelectedBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.ListBoxItemFocusedSelectedBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(ListBoxItemFocusedSelectedBackgroundColorProperty) });
            BindingOperations.SetBinding(this, ListBoxItemFocusedSelectedBackgroundColorProperty, new Binding { Source = palette["XboxGreenLight"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.ListBoxItemFocusedSelectedForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.ListBoxItemFocusedSelectedForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(ListBoxItemFocusedSelectedForegroundColorProperty) });
            BindingOperations.SetBinding(this, ListBoxItemFocusedSelectedForegroundColorProperty, new Binding { Source = palette["Black"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.ListBoxItemSelectedBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.ListBoxItemSelectedBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(ListBoxItemSelectedBackgroundColorProperty) });
            BindingOperations.SetBinding(this, ListBoxItemSelectedBackgroundColorProperty, new Binding { Source = palette["LightGray"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.ListBoxItemSelectedForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.ListBoxItemSelectedForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(ListBoxItemSelectedForegroundColorProperty) });
            BindingOperations.SetBinding(this, ListBoxItemSelectedForegroundColorProperty, new Binding { Source = palette["Black"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.WindowBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.WindowBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(WindowBackgroundColorProperty) });
            BindingOperations.SetBinding(this, WindowBackgroundColorProperty, new Binding { Source = palette["LightGray"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.WindowTitleForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.WindowTitleForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(WindowTitleForegroundColorProperty) });
            BindingOperations.SetBinding(this, WindowTitleForegroundColorProperty, new Binding { Source = palette["Black"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.WindowTitleInactiveForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.WindowTitleInactiveForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(WindowTitleInactiveForegroundColorProperty) });
            BindingOperations.SetBinding(this, WindowTitleInactiveForegroundColorProperty, new Binding { Source = palette["Gray"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.ScrollBarThumbBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.ScrollBarThumbBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(ScrollBarThumbColorProperty) });
            BindingOperations.SetBinding(this, ScrollBarThumbColorProperty, new Binding { Source = palette["LightGray"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.ScrollBarThumbHoverBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.ScrollBarThumbHoverBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(ScrollBarThumbHoverColorProperty) });
            BindingOperations.SetBinding(this, ScrollBarThumbHoverColorProperty, new Binding { Source = palette["Gray"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.ScrollBarThumbPressedBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.ScrollBarThumbPressedBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(ScrollBarThumbPressedColorProperty) });
            BindingOperations.SetBinding(this, ScrollBarThumbPressedColorProperty, new Binding { Source = palette["Black"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TabControlActiveBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TabControlActiveBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TabControlActiveBackgroundColorProperty) });
            BindingOperations.SetBinding(this, TabControlActiveBackgroundColorProperty, new Binding { Source = palette["White"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TabControlActiveBorderBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TabControlActiveBorderBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TabControlActiveBorderColorProperty) });
            BindingOperations.SetBinding(this, TabControlActiveBorderColorProperty, new Binding { Source = palette["XboxGreen"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TabControlBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TabControlBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TabControlBackgroundColorProperty) });
            BindingOperations.SetBinding(this, TabControlBackgroundColorProperty, new Binding { Source = palette["White"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TabControlBorderBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TabControlBorderBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TabControlBorderColorProperty) });
            BindingOperations.SetBinding(this, TabControlBorderColorProperty, new Binding { Source = palette["White"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TabItemActiveBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TabItemActiveBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TabItemActiveBackgroundColorProperty) });
            BindingOperations.SetBinding(this, TabItemActiveBackgroundColorProperty, new Binding { Source = palette["White"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TabItemActiveBorderBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TabItemActiveBorderBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TabItemActiveBorderColorProperty) });
            BindingOperations.SetBinding(this, TabItemActiveBorderColorProperty, new Binding { Source = palette["Transparent"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TabItemActiveForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TabItemActiveForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TabItemActiveForegroundColorProperty) });
            BindingOperations.SetBinding(this, TabItemActiveForegroundColorProperty, new Binding { Source = palette["Black"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TabItemActiveSelectedBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TabItemActiveSelectedBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TabItemActiveSelectedBackgroundColorProperty) });
            BindingOperations.SetBinding(this, TabItemActiveSelectedBackgroundColorProperty, new Binding { Source = palette["White"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TabItemActiveSelectedBorderBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TabItemActiveSelectedBorderBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TabItemActiveSelectedBorderColorProperty) });
            BindingOperations.SetBinding(this, TabItemActiveSelectedBorderColorProperty, new Binding { Source = palette["XboxGreen"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TabItemActiveSelectedForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TabItemActiveSelectedForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TabItemActiveSelectedForegroundColorProperty) });
            BindingOperations.SetBinding(this, TabItemActiveSelectedForegroundColorProperty, new Binding { Source = palette["XboxGreen"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TabItemBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TabItemBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TabItemBackgroundColorProperty) });
            BindingOperations.SetBinding(this, TabItemBackgroundColorProperty, new Binding { Source = palette["White"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TabItemBorderBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TabItemBorderBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TabItemBorderColorProperty) });
            BindingOperations.SetBinding(this, TabItemBorderColorProperty, new Binding { Source = palette["Transparent"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TabItemForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TabItemForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TabItemForegroundColorProperty) });
            BindingOperations.SetBinding(this, TabItemForegroundColorProperty, new Binding { Source = palette["Gray"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TabItemHoverBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TabItemHoverBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TabItemHoverBackgroundColorProperty) });
            BindingOperations.SetBinding(this, TabItemHoverBackgroundColorProperty, new Binding { Source = palette["White"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TabItemHoverBorderBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TabItemHoverBorderBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TabItemHoverBorderColorProperty) });
            BindingOperations.SetBinding(this, TabItemHoverBorderColorProperty, new Binding { Source = palette["Gray"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TabItemHoverForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TabItemHoverForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TabItemHoverForegroundColorProperty) });
            BindingOperations.SetBinding(this, TabItemHoverForegroundColorProperty, new Binding { Source = palette["XboxGreen"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TabItemSelectedBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TabItemSelectedBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TabItemSelectedBackgroundColorProperty) });
            BindingOperations.SetBinding(this, TabItemSelectedBackgroundColorProperty, new Binding { Source = palette["White"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TabItemSelectedBorderBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TabItemSelectedBorderBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TabItemSelectedBorderColorProperty) });
            BindingOperations.SetBinding(this, TabItemSelectedBorderColorProperty, new Binding { Source = palette["LightGray"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TabItemSelectedForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TabItemSelectedForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TabItemSelectedForegroundColorProperty) });
            BindingOperations.SetBinding(this, TabItemSelectedForegroundColorProperty, new Binding { Source = palette["XboxGreen"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TabPanelActiveBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TabPanelActiveBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TabPanelActiveBackgroundColorProperty) });
            BindingOperations.SetBinding(this, TabPanelActiveBackgroundColorProperty, new Binding { Source = palette["White"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TabPanelBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TabPanelBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TabPanelBackgroundColorProperty) });
            BindingOperations.SetBinding(this, TabPanelBackgroundColorProperty, new Binding { Source = palette["White"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TabPanelBorderBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TabPanelBorderBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TabPanelBorderColorProperty) });
            BindingOperations.SetBinding(this, TabPanelBorderColorProperty, new Binding { Source = palette["LightGray"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TextBoxSelectionBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TextBoxSelectionBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TextBoxSelectionColorProperty) });
            BindingOperations.SetBinding(this, TextBoxSelectionColorProperty, new Binding { Source = palette["XboxGreen"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TextEditorFocusedSelectionBorderBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TextEditorFocusedSelectionBorderBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TextEditorFocusedSelectionBorderColorProperty) });
            BindingOperations.SetBinding(this, TextEditorFocusedSelectionBorderColorProperty, new Binding { Source = palette["XboxGreen"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TextEditorFocusedSelectionBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TextEditorFocusedSelectionBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TextEditorFocusedSelectionColorProperty) });
            this.TextEditorSelectionBorderBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TextEditorSelectionBorderBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TextEditorSelectionBorderColorProperty) });
            BindingOperations.SetBinding(this, TextEditorSelectionBorderColorProperty, new Binding { Source = palette["Gray"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TextEditorSelectionBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TextEditorSelectionBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TextEditorSelectionColorProperty) });
            this.TimelineSelectionBorderBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TimelineSelectionBorderBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TimelineSelectionBorderColorProperty) });
            BindingOperations.SetBinding(this, TimelineSelectionBorderColorProperty, new Binding { Source = palette["White"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TimelineSelectionBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TimelineSelectionBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TimelineSelectionColorProperty) });
            BindingOperations.SetBinding(this, TimelineSelectionColorProperty, new Binding { Source = palette["TimelineSelection"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TimelineMousePointBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TimelineMousePointBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TimelineMousePointColorProperty) });
            this.ToggleButtonCheckedBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.ToggleButtonCheckedBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(ToggleButtonCheckedBackgroundColorProperty) });
            BindingOperations.SetBinding(this, ToggleButtonCheckedBackgroundColorProperty, new Binding { Source = palette["Gray"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.ToggleButtonCheckedBorderBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.ToggleButtonCheckedBorderBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(ToggleButtonCheckedBorderColorProperty) });
            BindingOperations.SetBinding(this, ToggleButtonCheckedBorderColorProperty, new Binding { Source = palette["White"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.ToggleButtonCheckedForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.ToggleButtonCheckedForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(ToggleButtonCheckedForegroundColorProperty) });
            BindingOperations.SetBinding(this, ToggleButtonCheckedForegroundColorProperty, new Binding { Source = palette["White"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.ToggleButtonDisabledCheckedBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.ToggleButtonDisabledCheckedBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(ToggleButtonDisabledCheckedBackgroundColorProperty) });
            BindingOperations.SetBinding(this, ToggleButtonDisabledCheckedBackgroundColorProperty, new Binding { Source = palette["LighterGray"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.ToggleButtonDisabledCheckedBorderBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.ToggleButtonDisabledCheckedBorderBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(ToggleButtonDisabledCheckedBorderColorProperty) });
            BindingOperations.SetBinding(this, ToggleButtonDisabledCheckedBorderColorProperty, new Binding { Source = palette["LightGray"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.ToggleButtonDisabledCheckedForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.ToggleButtonDisabledCheckedForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(ToggleButtonDisabledCheckedForegroundColorProperty) });
            BindingOperations.SetBinding(this, ToggleButtonDisabledCheckedForegroundColorProperty, new Binding { Source = palette["Gray"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.ToggleButtonFocusedCheckedBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.ToggleButtonFocusedCheckedBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(ToggleButtonFocusedCheckedBackgroundColorProperty) });
            BindingOperations.SetBinding(this, ToggleButtonFocusedCheckedBackgroundColorProperty, new Binding { Source = palette["XboxGreen"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.ToggleButtonFocusedCheckedBorderBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.ToggleButtonFocusedCheckedBorderBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(ToggleButtonFocusedCheckedBorderColorProperty) });
            BindingOperations.SetBinding(this, ToggleButtonFocusedCheckedBorderColorProperty, new Binding { Source = palette["White"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.ToggleButtonFocusedCheckedForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.ToggleButtonFocusedCheckedForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(ToggleButtonFocusedCheckedForegroundColorProperty) });
            BindingOperations.SetBinding(this, ToggleButtonFocusedCheckedForegroundColorProperty, new Binding { Source = palette["White"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.ToggleButtonHoverCheckedBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.ToggleButtonHoverCheckedBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(ToggleButtonHoverCheckedBackgroundColorProperty) });
            BindingOperations.SetBinding(this, ToggleButtonHoverCheckedBackgroundColorProperty, new Binding { Source = palette["XboxGreenDark"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.ToggleButtonHoverCheckedBorderBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.ToggleButtonHoverCheckedBorderBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(ToggleButtonHoverCheckedBorderColorProperty) });
            BindingOperations.SetBinding(this, ToggleButtonHoverCheckedBorderColorProperty, new Binding { Source = palette["White"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.ToggleButtonHoverCheckedForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.ToggleButtonHoverCheckedForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(ToggleButtonHoverCheckedForegroundColorProperty) });
            BindingOperations.SetBinding(this, ToggleButtonHoverCheckedForegroundColorProperty, new Binding { Source = palette["White"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TreeGridBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TreeGridBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TreeGridBackgroundColorProperty) });
            BindingOperations.SetBinding(this, TreeGridBackgroundColorProperty, new Binding { Source = palette["White"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TreeGridCurrentRowBorderBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TreeGridCurrentRowBorderBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TreeGridCurrentRowBorderColorProperty) });
            BindingOperations.SetBinding(this, TreeGridCurrentRowBorderColorProperty, new Binding { Source = palette["MediumGray"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TreeGridFocusedCurrentRowBorderBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TreeGridFocusedCurrentRowBorderBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TreeGridFocusedCurrentRowBorderColorProperty) });
            BindingOperations.SetBinding(this, TreeGridFocusedCurrentRowBorderColorProperty, new Binding { Source = palette["XboxGreen"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TreeGridFocusedSelectedBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TreeGridFocusedSelectedBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TreeGridFocusedSelectedBackgroundColorProperty) });
            BindingOperations.SetBinding(this, TreeGridFocusedSelectedBackgroundColorProperty, new Binding { Source = palette["XboxGreenLight"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TreeGridFocusedSelectedForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TreeGridFocusedSelectedForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TreeGridFocusedSelectedForegroundColorProperty) });
            BindingOperations.SetBinding(this, TreeGridFocusedSelectedForegroundColorProperty, new Binding { Source = palette["Black"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TreeGridForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TreeGridForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TreeGridForegroundColorProperty) });
            BindingOperations.SetBinding(this, TreeGridForegroundColorProperty, new Binding { Source = palette["Black"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TreeGridHeaderBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TreeGridHeaderBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TreeGridHeaderBackgroundColorProperty) });
            BindingOperations.SetBinding(this, TreeGridHeaderBackgroundColorProperty, new Binding { Source = palette["LightGray"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TreeGridHeaderFocusedBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TreeGridHeaderFocusedBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TreeGridHeaderFocusedBackgroundColorProperty) });
            BindingOperations.SetBinding(this, TreeGridHeaderFocusedBackgroundColorProperty, new Binding { Source = palette["LightGray"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TreeGridHeaderFocusedForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TreeGridHeaderFocusedForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TreeGridHeaderFocusedForegroundColorProperty) });
            BindingOperations.SetBinding(this, TreeGridHeaderFocusedForegroundColorProperty, new Binding { Source = palette["Black"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TreeGridHeaderFocusedHoverBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TreeGridHeaderFocusedHoverBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TreeGridHeaderFocusedHoverBackgroundColorProperty) });
            BindingOperations.SetBinding(this, TreeGridHeaderFocusedHoverBackgroundColorProperty, new Binding { Source = palette["Gray"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TreeGridHeaderFocusedHoverForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TreeGridHeaderFocusedHoverForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TreeGridHeaderFocusedHoverForegroundColorProperty) });
            BindingOperations.SetBinding(this, TreeGridHeaderFocusedHoverForegroundColorProperty, new Binding { Source = palette["White"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TreeGridHeaderForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TreeGridHeaderForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TreeGridHeaderForegroundColorProperty) });
            BindingOperations.SetBinding(this, TreeGridHeaderForegroundColorProperty, new Binding { Source = palette["Black"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TreeGridHeaderHoverBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TreeGridHeaderHoverBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TreeGridHeaderHoverBackgroundColorProperty) });
            BindingOperations.SetBinding(this, TreeGridHeaderHoverBackgroundColorProperty, new Binding { Source = palette["Gray"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TreeGridHeaderHoverForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TreeGridHeaderHoverForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TreeGridHeaderHoverForegroundColorProperty) });
            BindingOperations.SetBinding(this, TreeGridHeaderHoverForegroundColorProperty, new Binding { Source = palette["White"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TreeGridHeaderPressedBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TreeGridHeaderPressedBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TreeGridHeaderPressedBackgroundColorProperty) });
            BindingOperations.SetBinding(this, TreeGridHeaderPressedBackgroundColorProperty, new Binding { Source = palette["XboxGreen"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TreeGridHeaderPressedForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TreeGridHeaderPressedForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TreeGridHeaderPressedForegroundColorProperty) });
            BindingOperations.SetBinding(this, TreeGridHeaderPressedForegroundColorProperty, new Binding { Source = palette["White"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TreeGridLinesBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TreeGridLinesBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TreeGridLinesColorProperty) });
            BindingOperations.SetBinding(this, TreeGridLinesColorProperty, new Binding { Source = palette["LightGray"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TreeGridSelectedBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TreeGridSelectedBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TreeGridSelectedBackgroundColorProperty) });
            BindingOperations.SetBinding(this, TreeGridSelectedBackgroundColorProperty, new Binding { Source = palette["LightGray"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TreeGridSelectedForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TreeGridSelectedForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TreeGridSelectedForegroundColorProperty) });
            BindingOperations.SetBinding(this, TreeGridSelectedForegroundColorProperty, new Binding { Source = palette["Black"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TreeViewItemFocusedSelectedBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TreeViewItemFocusedSelectedBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TreeViewItemFocusedSelectedBackgroundColorProperty) });
            BindingOperations.SetBinding(this, TreeViewItemFocusedSelectedBackgroundColorProperty, new Binding { Source = palette["XboxGreenLight"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TreeViewItemFocusedSelectedForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TreeViewItemFocusedSelectedForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TreeViewItemFocusedSelectedForegroundColorProperty) });
            BindingOperations.SetBinding(this, TreeViewItemFocusedSelectedForegroundColorProperty, new Binding { Source = palette["Black"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TreeViewItemSelectedBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TreeViewItemSelectedBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TreeViewItemSelectedBackgroundColorProperty) });
            BindingOperations.SetBinding(this, TreeViewItemSelectedBackgroundColorProperty, new Binding { Source = palette["LightGray"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TreeViewItemSelectedForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TreeViewItemSelectedForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TreeViewItemSelectedForegroundColorProperty) });
            BindingOperations.SetBinding(this, TreeViewItemSelectedForegroundColorProperty, new Binding { Source = palette["Black"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.ViewBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.ViewBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(ViewBackgroundColorProperty) });
            BindingOperations.SetBinding(this, ViewBackgroundColorProperty, new Binding { Source = palette["White"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.ViewBorderBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.ViewBorderBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(ViewBorderColorProperty) });
            BindingOperations.SetBinding(this, ViewBorderColorProperty, new Binding { Source = palette["LightGray"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.AccentBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.AccentBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(AccentBackgroundColorProperty) });
            BindingOperations.SetBinding(this, AccentBackgroundColorProperty, new Binding { Source = palette["XboxGreen"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.AccentForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.AccentForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(AccentForegroundColorProperty) });
            BindingOperations.SetBinding(this, AccentForegroundColorProperty, new Binding { Source = palette["White"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TitleBarButtonBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TitleBarButtonBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TitleBarButtonBackgroundColorProperty) });
            BindingOperations.SetBinding(this, TitleBarButtonBackgroundColorProperty, new Binding { Source = palette["LightGray"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TitleBarButtonForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TitleBarButtonForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TitleBarButtonForegroundColorProperty) });
            BindingOperations.SetBinding(this, TitleBarButtonForegroundColorProperty, new Binding { Source = palette["Black"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TitleBarButtonHoverBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TitleBarButtonHoverBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TitleBarButtonHoverBackgroundColorProperty) });
            BindingOperations.SetBinding(this, TitleBarButtonHoverBackgroundColorProperty, new Binding { Source = palette["LighterGray"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TitleBarButtonHoverForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TitleBarButtonHoverForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TitleBarButtonHoverForegroundColorProperty) });
            BindingOperations.SetBinding(this, TitleBarButtonHoverForegroundColorProperty, new Binding { Source = palette["Black"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TitleBarButtonPressedBackgroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TitleBarButtonPressedBackgroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TitleBarButtonPressedBackgroundColorProperty) });
            BindingOperations.SetBinding(this, TitleBarButtonPressedBackgroundColorProperty, new Binding { Source = palette["XboxGreen"], Path = new PropertyPath(PaletteColor.ColorProperty) });
            this.TitleBarButtonPressedForegroundBrush = new SolidColorBrush();
            BindingOperations.SetBinding(this.TitleBarButtonPressedForegroundBrush, SolidColorBrush.ColorProperty, new Binding { Source = this, Path = new PropertyPath(TitleBarButtonPressedForegroundColorProperty) });
            BindingOperations.SetBinding(this, TitleBarButtonPressedForegroundColorProperty, new Binding { Source = palette["White"], Path = new PropertyPath(PaletteColor.ColorProperty) });
        }
 protected override void OnValueChanged(DependencyPropertyChangedEventArgs e)
 {
     if (!this.autoSettingValue)
     {
         if (e.NewValue is Color)
         {
             this.SelectedPaletteColor = null;
             this.Color = (Color)e.NewValue;
         }
         else if (this.Value is PaletteColor)
         {
             this.SelectedPaletteColor = (PaletteColor)this.Value;
         }
     }
 }
        public static Theme LoadTheme(XElement element)
        {
            try
            {
                var themeType = Type.GetType(element.Attribute("Type").Value);
                var theme = Activator.CreateInstance(themeType) as Theme;

                var validProps = theme.GetType().GetFields(BindingFlags.Static | BindingFlags.Public | BindingFlags.FlattenHierarchy)
                    .Where(fi => fi.FieldType == typeof(DependencyProperty))
                    .Select(fi => (DependencyProperty)fi.GetValue(null))
                    .Where(dp => !dp.ReadOnly)
                    .ToDictionary(dp => dp.Name);
                var converters = new Dictionary<Type, TypeConverter>();
                var paletteElement = element.Element("Palette");
                var palette = new Dictionary<string, PaletteColor>();

                if (paletteElement != null)
                {
                    var colorConverter = TypeDescriptor.GetConverter(typeof(Color));

                    converters[typeof(Color)] = colorConverter;

                    foreach (var colorElement in paletteElement.Elements("PaletteColor"))
                    {
                        var paletteColor = new PaletteColor
                        {
                            Name = colorElement.Attribute("Name").Value,
                            Color = (Color)colorConverter.ConvertFromString(null, CultureInfo.InvariantCulture, colorElement.Attribute("Color").Value)
                        };

                        palette[paletteColor.Name] = paletteColor;
                    }

                    // NOTE:  We add the palette entries after loading them all to remove any duplicates.
                    // If the user names palette colors the same, they'll work independently until saved.
                    // When loaded, they'll be unified.  Not awesome, but better than crashing.
                    theme.Palette.Clear();
                    foreach (var pc in palette.Values)
                    {
                        theme.Palette.Add(pc);
                    }
                }

                foreach (var propElement in element.Elements("Property"))
                {
                    var nameAttr = propElement.Attribute("Name");
                    var valueAttr = propElement.Attribute("Value");

                    if (nameAttr != null)
                    {
                        DependencyProperty dp;
                        object value;

                        if (validProps.TryGetValue(nameAttr.Value, out dp))
                        {
                            if (dp.PropertyType == typeof(Color) && valueAttr.Value.StartsWith("="))
                            {
                                PaletteColor paletteColor;

                                if (palette.TryGetValue(valueAttr.Value.Substring(1), out paletteColor))
                                {
                                    BindingOperations.SetBinding(theme, dp, new Binding { Source = paletteColor, Path = new PropertyPath(PaletteColor.ColorProperty) });
                                }
                            }
                            else
                            {
                                if (dp.PropertyType == typeof(string))
                                {
                                    value = valueAttr.Value;
                                }
                                else
                                {
                                    TypeConverter converter;

                                    if (!converters.TryGetValue(dp.PropertyType, out converter))
                                    {
                                        converter = TypeDescriptor.GetConverter(dp.PropertyType);
                                        converters[dp.PropertyType] = converter;
                                    }

                                    value = converter.ConvertFromString(valueAttr.Value);
                                }

                                theme.SetValue(dp, value);
                            }
                        }
                    }
                }

                return theme;
            }
            catch (Exception)
            {
                return Theme.Instance.ThemeCreator();
            }
        }